2

私は次の関係を持っています ( 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

どうも

4

1 に答える 1

1

祖先についてはわかりませんが、あなたはできます

has_many :children, each_serializer: MenuHeaderSerializer

于 2014-12-20T03:41:54.450 に答える