2015-07-23 1 views
1
class ProjectSerializer < ActiveModel::Serializer 
    attributes :id, :title 
end 

Я использую сериализатор activemodel для возврата атрибута title с некоторыми условиями. Обычно я могу переопределить метод title, но я хочу определить, возвращается ли атрибут title или нет с условием.Использовать атрибут с условием в serialemodel serializer

ответ

1

Я не уверен, что вы используете, но, возможно, вы можете использовать удивительно магические методы include_! Они самые крутые!

class ProjectSerializer < ActiveModel::Serializer 
    attributes :id, :title 

    def include_title? 
    object.title.present? 
    end 
end 

Если object.title.present? является true, то атрибут title будет возвращен сериализатором. Если это false, атрибут title будет вообще оставлен. Имейте в виду, что метод include_ поставляется с его собственной специфической функциональностью и делает все автоматически. Его нельзя вызывать в другом месте в сериализаторе.

Если вам нужно позвонить методу, вы можете создать свой собственный «локальный» метод, который вы можете использовать в сериализаторе.

class ProjectSerializer < ActiveModel::Serializer 
    attributes :id, :title 

    def title? 
    object.title.present? 
    end 
end 

Опять же, точно не знаю, какие функции вы ищете, но, надеюсь, это поможет вам идти в правильном направлении.