Я пытаюсь динамически определять сериалайзер, основанный на свойстве модели (в пределах родительского сериализатора):Динамически задание сериалайзера, основанный на свойстве модели
ActiveModel::Serializer.setup do |config|
config.embed = :ids
config.embed_in_root = true
end
class DocumentSerializer < ActiveModel::Serializer
attributes :id, :name, :document_layout
if attributes[:document_layout] === 'portrait'
has_many :pages, serializer: PortraitPageSerializer
elsif attributes[:document_layout] === 'landscape'
has_many :pages, serializer: LandscapePageSerializer
end
end
, но это не кажется работать (я считаю, что атрибуты - это не просто хэш).
Есть ли другой способ получить доступ к стоимости? Или я об этом совершенно неправильно?
Как вы выбрали DocumentSerializer? Вы только что сделали документ? – Swards
Yep в моем контроллере Я звоню: render json: @documents, status: ok –
Возможно, было бы разумнее использовать один и тот же сериализатор и просто оставить его пустым в зависимости от document_layout –