1

В моем проекте у меня есть модель DrinkPayment:только сериализации один объект с ActiveModel :: Serializer

class DrinkPayment < ActiveRecord::Base 
    #Association 
    belongs_to :drink 
    belongs_to :participation 
end 

И мой Serializer для этой модели:

class DrinkPaymentSerializer < ActiveModel::Serializer 
    ActiveModel::Serializer.setup do |config| 
    config.embed = :ids 
    config.embed_in_root = true 
    end 

    attributes :id, :participation_id, :drink_id 

    has_one :participation 
    has_one :drink 
end 

делают это, как это дает мне все DrinkPayments (id, member_id, drink_id), все Участие (id, user_id, ...) и все Напитки (id, club_id, ...). Проблема у меня в том, что мне не нужны участие, я просто хочу DrinkPayments и соответствующие напитки. Или даже лучше, только напитки.

Есть ли возможность достичь этого с помощью ActiveModel :: Serializer?

ответ

1

Просто измените DrinkPaymentSerializer, чтобы отразить то, что вам нужно:

class DrinkPaymentSerializer < ActiveModel::Serializer 
    attributes :id 

    has_one :drink 
end 

Вы можете добавить, что вы хотите сериализатором:

class DrinkPaymentSerializer < ActiveModel::Serializer 
    attributes :drink_name, :price 

    def drink_name 
    object.drink.name 
    end 

    def price 
    { amount: object.amount, currency: object.currency } 
    end 
end 
Смежные вопросы