将通用字段添加到rails JSON响应

时间:2013-07-21 05:32:10

标签: ruby-on-rails json

我需要为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响应中添加通用字段(不是模型的一部分)?

2 个答案:

答案 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方法。