2013-03-17 74 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