Rails API JSON响应,更改方法名称

时间:2018-10-18 17:57:03

标签: ruby-on-rails rails-api

我有一个Rails 5 API,它使用对象的某些方法将对象呈现为JSON。

render json: { rides: @rides }.to_json( :methods => [ :is_preferred ]), status: 200

因此返回的内容如下:

{
 id: 123,
 is_preferred: true
}

但是我想更改引用is_preferred方法的属性的名称。

我想要id的输出:

{
 id: 123,
 preferred: true
}

我尝试过

render json: { rides: @rides }.to_json( :methods => [ preferred: :is_preferred ]), status: 200

但这不起作用。最简单的方法是更改​​模型中的方法名称,但是在这种情况下是不可能的。

有什么办法可以在响应中操纵名称?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用ActiveModel::Serializer,然后根据需要定义属性键

class RideSerializer < ActiveModel::Serializer
  attribute :preferred, key: :is_preferred
end

或使用一种方法来检索属性值

class RideSerializer < ActiveModel::Serializer
  attribute :is_preferred

  def is_preferred
    object.preferred
  end
end

使用序列化程序有很多好处,如果您要创建自定义响应,功能非常强大。