2015-02-15 3 views
0

Я пытаюсь создать сериализатор, который выдаст объект, имеющий несколько ссылок на один и тот же объект. Например, существует объект «Кредитор», который имеет два адреса, один из которых - «регистрационный адрес», а второй - «фактический адрес».Использование ActiveModel :: Сериализатор с моделью, имеющей несколько ссылок на один и тот же объект

Модель

class Lender < ActiveRecord::Base 
    ... 
    belongs_to :address, foreign_key: 'registration_address_id' 
    belongs_to :address, foreign_key: 'actual_address_id' 
    ... 
end 

Serializer

class LenderSerializer < ActiveModel::Serializer 
    embed :ids, include: true 
    attributes :id, ... 

    has_one :address, key: :actual_address_id 
    has_one :address, key: :registration_address_id 
end 

Когда клиент загружает этот объект с сервера там только один ссылка включена в вывод JSON так же, как это:

{"addresses":[{"id":5,"full_address":"..."}], 
"lenders":[{"id":2,"company_title":null,"registration_address_id":5}]} 

Проблема заключается в том, что в выходном JSON нет «actual_address_id», и в первом массиве адресов нет «фактического адреса».

ответ

0

На всякий случай, если кому-то это понадобится.

Чтобы решить эту проблему, я включил драгоценный камень JBuilder, который дает гораздо более явный контроль над выходным форматом JSON.