将ActiveModel::Serializer与对同一对象具有多个引用的模型一起使用



我正在尝试创建一个序列化程序,它将给出一个对同一对象有多个引用的对象。例如,有一个"贷款人"对象有两个地址,其中一个是"注册地址",另一个则是"实际地址"。

型号

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",并且在第一个地址数组中也没有"实际地址"。

以防万一有人需要。

为了解决这个问题,我切换到JBuilder gem,它对输出JSON格式提供了更明确的控制。

相关内容

  • 没有找到相关文章

最新更新