我正在尝试将模型的关联序列化为关联模型的ID(int)数组。 我目前正在使用:serializable_hash中的include选项:
:include => {:associated => {:only => [:id]}
输出json像:
{"id":13, ...,"associated":[{"id":15,"associated":[]},{"id":14,"associated":[]}]}
不知道为什么对应关联对象具有“关联”键;但那不是很重要;我想要的是获得如下输出:
{"id":13, "associated":[15,14]}
我该怎么做才能得到这个?
答案 0 :(得分:1)
如果您只需要associated
模型ID,则可以尝试在父模型中创建方法,如:
class ParentModel < ActiveRecord::Base
# ...
def associated_ids
associated.pluck(:id)
end
end
然后在serializable_hash
或to_json
方法中,我会这样做:
parent_model_instance.includes(:associated).serializable_hash(methods: [:associated_ids])
哪个应该产生这个:
{ "id": 13, "associated_ids": [15,14] }
答案 1 :(得分:1)
也许您可以在序列化程序中执行此操作:
class SomeSerializer < ActiveModel::Serializer
embed :ids
has_many :associateds
end