格式化子对象的to_json方法

时间:2016-07-11 12:02:39

标签: ruby-on-rails ruby

我有一个Rails对象产品:

{
    id: 1
    name: 'soup'
}

客户对象:

{
    id: 20
    name: 'Ryans'
}

它们通过以下方式链接:

class Product < ActiveRecord::Base
  belongs_to :customer

当我调用Product.to_json(方法:[:customer])时,我得到:

{
    id: 1
    name: 'soup',
    customer: {
        id: 20
        name: 'Ryans'
    }
}

但我需要这个格式:

{
    id: 1
    name: 'soup',
    customer_name: 'Ryans'
}

这可能吗?我使用的是Rails v4.1.7

1 个答案:

答案 0 :(得分:1)

您可以将name委托给Customer班级

class Product < ActiveRecord::Base
  belongs_to :customer
  delegate :name, to: :customer, prefix: true

然后你可以做

Product.to_json(methods: [:customer_name])