【发布时间】:2018-10-18 17:57:02
【问题描述】:
我有一个 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
但这不起作用。最简单的方法是更改模型中的方法名称,但在这种情况下这是不可能的。
有什么方法可以在响应中操纵名称吗?
【问题讨论】:
-
你说不能改方法名,但是可以创建别名吗?
alias_method :preferred, :is_preferred在模型上。 -
No.. 使用 API 的应用程序(我无法更改)需要首选属性。但在我的模型中,我有一个首选方法已经在做其他事情,所以我无法创建别名。我知道,这是一团糟,但我知道我需要一些解决方法,直到我可以更改应用程序......
-
但是谢谢,我最终更改了我的 API 中的首选方法,因此它可以免费用作我的 JSON 响应中的方法...