私は次の関係を持っています ( RoR 3.2.13 と ancestry 2.0.0 を使用) 。
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
どうも