我有以下关系(使用 RoR 3.2.13 和祖先 2.0.0)并且真的需要一些帮助来配置序列化程序如何使用 MenuHeaderSerializer 呈现:
class Menu < ActiveRecord::Base
has_many :menu_headers
end
class MenuHeader < ActiveRecord::Base
has_ancestry # the nested relationship
has_many :items
belongs_to :menu
end
class Item < ActiveRecord::Base
belongs_to :menu_header
end
我的序列化程序非常易于解释,如下所示:
class MenuSerializer < ActiveModel::Serializer
attributes :id, :name, :menu_headers
has_many :menu_headers
end
class MenuHeaderSerializer < ActiveModel::Serializer
attributes :id, :name, :children # <- this needs to be called and wrapped in a MenuHeaderSerializer; it basically just dumps eveything like to_json
#has_many :items
end
所以我对孩子的呼吁应该使用 MenuHeaderSerializer 返回孩子。那有意义吗?
我已经尝试了我认为的所有变体,如下所示:
class MenuHeaderSerializer < ActiveModel::Serializer
attributes :id, :name, :sub # :children #, :sub
def sub
MenuHeaderSerializer.new(children)
#object.children
end
或试图强迫孩子使用 MenuHeaderSerializer 但我不知所措。任何帮助,将不胜感激。
也许是这样的:
attributes :id, :name, :children serializer: MenuHeaderSerializer # doesn't work
谢谢