将关联序列化为ID数组

时间:2013-03-17 00:21:02

标签: ruby-on-rails-3 activemodel active-model-serializers

我正在尝试将模型的关联序列化为关联模型的ID(int)数组。 我目前正在使用:serializable_hash中的include选项:

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

输出json像:

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

不知道为什么对应关联对象具有“关联”键;但那不是很重要;我想要的是获得如下输出:

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

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

2 个答案:

答案 0 :(得分: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 :(得分:1)

也许您可以在序列化程序中执行此操作:

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