2013-03-17 73 views
1

我试图将模型的关联序列化为关联模型的ID(int)的数组。我目前使用 :包括serializable_hash选项,例如:将关联序列化为ID数组

:include => {:associated => {:only => [:id]} 

至极输出JSON,如:

{"id":13, ...,"associated":[{"id":15,"associated":[]},{"id":14,"associated":[]}]} 

不知道为什么,对应关联的对象有一个“关联”键;但这并不重要;我想要得到的输出如下:

{"id":13, "associated":[15,14]} 

我该怎么做才能得到这个?

回答

1

如果你只需要associated型号ID,你可以尝试像父模型建立方法:

class ParentModel < ActiveRecord::Base 
    # ... 

    def associated_ids 
    associated.pluck(:id) 
    end 
end 

然后在serializable_hashto_json方法,我这样做:

parent_model_instance.includes(:associated).serializable_hash(methods: [:associated_ids]) 

这应该产生这样的:

{ "id": 13, "associated_ids": [15,14] } 
1

也许你可以在你的序列化程序中使用它:

class SomeSerializer < ActiveModel::Serializer 
    embed :ids 
    has_many :associateds 
end