在Rails 5应用程序中,我使用了Active Model Serializer 0.10.0.rc4
。我想在json哈希中包含一个关系。
我有这个序列化器:
class GroupSerializer < ActiveModel::Serializer
attributes :id, :name, :subscription_ids, :nb_places, :description,
:schedule, :course_id
end
我正在使用它:
resource = Group.all
ActiveModel::Serializer.serializer_for(resource).new(resource, include: :subscriptions).as_json
我有这个:
{"group"=>{:id=>1, :name=>"12", :subscription_ids=>[1, 2, 3], :nb_places=>12, :description=>nil, :schedule=>"12", :course_id=>1}}
我不明白为什么订阅不包括在内。我不想在序列化程序中使用has_many
,因为当有多个规则时它会导致无限循环。
我想要这样的事情:
{"group"=>{:id=>1, :name=>"12", :subscription_ids=>[1], :nb_places=>12, :description=>nil, :schedule=>"12", :course_id=>1, :subscriptions=>[{:id=>1,:name=>'something'}]}
我该怎么办?
答案 0 :(得分:1)
您可以创建这样的订阅方法:
attributes :subscriptions
def subscriptions
object.subscriptions.as_json(only: [:id, :name])
end