我有一个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
但这不起作用。最简单的方法是更改模型中的方法名称,但是在这种情况下是不可能的。
有什么办法可以在响应中操纵名称?
答案 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
使用序列化程序有很多好处,如果您要创建自定义响应,功能非常强大。