2016-05-02 7 views
0

Я пытаюсь загрузить ассоциацию следующим образом:Активные данные Модель сериализаторы атрибуты объединения не загружаются

Это мой контроллер, который пытается оказать JSON.

#app/controllers/store/products_controller.rb 
    def customize 
    @option_types = OptionType.all 
    respond_to do |format| 
     format.json { render :json => @option_types} 
    end 
    end 

Это сериализатор для объекта над

#app/serializers/option_type_serializer.rb 
class OptionTypeSerializer < ActiveModel::Serializer 
    attributes :id, :key, :customizable, :name 
    has_many :option_values 
end 

значение_опции belong_to option_type

#app/serializers/option_value_serializer.rb 
class OptionValueSerializer < ActiveModel::Serializer 
    attributes :id, :key, :option_type_id, :percentage_price_impact, :fixed_price_impact, :absolute_price_impact, :name 
end 

Это генерирует следующий JSON. Хотя ряд других Params указаны в option_value_serializer.rb, только идентификатор и тип появляются в сгенерированном JSON

// http://0.0.0.0:3000/products/810/customize.json 
{ 
    "data": [ 
    { 
     "id": "1", 
     "type": "option-types", 
     "attributes": { 
     "key": "fabric", 
     "customizable": true, 
     "name": "FABRIC" 
     }, 
     "relationships": { 
     "option-values": { 
      "data": [ 
      { 
       "id": "1", 
       "type": "option-values" 
      }, 
      { 
       "id": "2", 
       "type": "option-values" 
      } 
      ] 
     } 
     } 
    }, 
    { 
     "id": "2", 
     "type": "option-types", 
     "attributes": { 
     "key": "cuff-type", 
     "customizable": false, 
     "name": "CUFF TYPE" 
     }, 
     "relationships": { 
     "option-values": { 
      "data": [ 

      ] 
     } 
     } 
    }, 
    { 
     "id": "3", 
     "type": "option-types", 
     "attributes": { 
     "key": "vents", 
     "customizable": false, 
     "name": "VENTS" 
     }, 
     "relationships": { 
     "option-values": { 
      "data": [ 

      ] 
     } 
     } 
    } 
    ] 
} 

ответ

0

забыть ассоциации, сделать это таким образом:

#app/serializers/option_type_serializer.rb 
class OptionTypeSerializer < ActiveModel::Serializer 
    attributes :id, :key, :customizable, :name, :option_values 
    # has_many :option_values 

    def option_values 
    object.option_values.collect do |ov| 
     { 
      id: ov.id, 
      key: ov.key, 
      option_type_id: ov.option_type_id, 
      percentage_price_impact: ov.percentage_price_impact, 
      fixed_price_impact: ov.fixed_price_impact, 
      absolute_price_impact: ov.absolute_price_impact, 
      name: ov.name, 
      description: ov.description, 
      image: ov.option_image 
     } 
    end 
    end 

end