2016-04-01 8 views
1

У меня есть следующий класс Serializer:Как определить пользовательские атрибуты для Serializer ActiveModel по параметрам объекта?

class BooksSerializer < ActiveModel::Serializer 
    attributes :name, :position 
    attributes :pages unless object.children.present? 

Но это падение вниз с ошибкой «неопределенный метод` объекта»для SectionSerializer: Класс». Как я могу получить параметры объекта для этих условий?

Я могу получить доступ к объекту только внутри функции. Например:

def pages 
    object.pages .... 
end 

Но мне нужно исключить некоторые поля из сериализации по условиям.

ответ

2

Я нашел решение:

class BooksSerializer < ActiveModel::Serializer 
    attributes :name 
    def attributes(*args) 
     hash = super 
     hash[:pages] = pages unless object.children.present?   
     hash 
    end 

    def pages 
    .... 
    end 
    .... 
end