将 ActiveModel::Serializer 与对同一对象具有多个引用的模型一起使用
Using ActiveModel::Serializer with a model that has several references onto the same object
我正在尝试创建一个序列化程序,它将给出一个对象,该对象对同一对象有多个引用。例如,有一个 "Lender" 对象有两个地址,其中一个是 "registration address",第二个是 "actual address".
型号
class Lender < ActiveRecord::Base
...
belongs_to :address, foreign_key: 'registration_address_id'
belongs_to :address, foreign_key: 'actual_address_id'
...
end
序列化器
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"并且第一个地址数组中没有"actual address"。
以防万一有人需要它。
为了解决这个问题,我切换到 JBuilder gem,这样可以更明确地控制输出 JSON 格式。
我正在尝试创建一个序列化程序,它将给出一个对象,该对象对同一对象有多个引用。例如,有一个 "Lender" 对象有两个地址,其中一个是 "registration address",第二个是 "actual address".
型号
class Lender < ActiveRecord::Base
...
belongs_to :address, foreign_key: 'registration_address_id'
belongs_to :address, foreign_key: 'actual_address_id'
...
end
序列化器
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"并且第一个地址数组中没有"actual address"。
以防万一有人需要它。
为了解决这个问题,我切换到 JBuilder gem,这样可以更明确地控制输出 JSON 格式。