У меня есть следующие соотношениям (используя RoR 3.2.13 и 2.0.0 родословную) и ДЕЙСТВИТЕЛЬНО нужна помощь в настройке, как сериализатору делает с MenuHeaderSerializer:использования ActiveModelSerializers и имеющие детей, оказываемых с конкретным Seriazlier
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
ТНХ
Я пытаюсь выяснить что-то подобное. Мне было предложено использовать 'embed: ids, include: true' в ActiveModelSerializer. Но я не уверен, как я собираюсь сделать эту работу с Ancestry, поскольку эта строка предназначена для ассоциаций has_many. –