我需要为REST api呈现JSON响应,我需要在其中包含不属于正在呈现的模型的其他JSON字段。我确实读过关于ActiveModel的link,它建议使用":方法"调用另一个方法的选项,我可以在其中添加其他通用字段。
def add_fields
{ "field1" => "true" }
end
if @user.save
render :json => @user.as_json(:only => [:username, :org], :methods => [:add_fields])
endif
然而,当收到JSON响应时,只收到用户名&组织字段在JSON中返回。方法中定义的附加参数" add_fields"没有添加。由于没有向JSON响应中添加哪些附加字段,我错过了什么。或者是否有更好的方法在JSON响应中添加通用字段(不是模型的一部分)?
答案 0 :(得分:0)
我刚刚在我自己的用户模型上测试了它,它运行得很好。
2.0.0p195 :002 > user.as_json(only: [:first_name, :last_name], methods: [:full_name])
{
"first_name" => "Cody",
"last_name" => "Russell",
:full_name => "Cody Russell"
}
您确定已定义方法,并且它是公共方法吗?
答案 1 :(得分:0)
您可能忘记在用户中实施#add_fields
方法。