2016-03-29 2 views
0

это то, что сериализатор для Event выглядит сейчасActiveModel сериализаторы изменение выходных параметров ассоциируемых моделей

class EventSerializer < ActiveModel::Serializer 
    attributes :name, :venue, :artists 
end 

выход я получаю

[{"name":"Dance your ass off", 
    "venue":{"id":21,"name":"Speakeasy","address":"Lynwood Ave","zip_code":30312,"created_at":"2016-03-24T18:13:03.032Z","updated_at":"2016-03-24T18:13:03.032Z"}, 
    "artists":[{"id":41,"name":"DJ Sliink","bio":"jersey club king","created_at":"2016-03-24T18:13:03.067Z","updated_at":"2016-03-24T18:13:03.067Z"},{"id":42,"name":"DJ Spinn","bio":"Teklife's chief spokesperson","created_at":"2016-03-24T18:13:03.072Z","updated_at":"2016-03-24T18:13:03.072Z"}]}] 

как изменить это, чтобы показывать только имена venue и artists?

ответ

1

Вы можете определить специальные методы для этих необходимых атрибутов, как показано ниже:

class EventSerializer < ActiveModel::Serializer 
    attributes :name, :venue, :artists 

    def name 
    object.name 
    end 

    def venue 
    object.venue.name 
    end 

    def artists 
    object.artists.map(&:name) 
    end 
end 

Вы можете передать AMS docs для получения дополнительной информации.

Смежные вопросы