Rails as_json,添加没有序列化器gem的自定义属性

时间:2013-11-02 23:50:43

标签: ruby-on-rails json rendering method-overriding

我有一个需要输出自定义json响应的rails应用程序。

我的Post模型有很多statusesstatus的{​​{1}}对于每个post都不同。

我希望将user作为json返回,每个Post.all包含依赖于用户的post es作为常规属性(看起来属于status的属性,没有嵌套的)

我该怎么做?我不想将current_user方法传递给我的模型,我也不想使用序列化器。

无论如何,我可以做这样的事情:

post

编辑:

澄清,我想:

respond_with(posts: @posts.as_json(:methods => [:status(current_user)])
#NOTE the current user arg

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我通过在PostsController中添加以下内容来解决这个问题:

def json_params_for(objects)
   collection = objects.map do |post|
   { id: post.id,
     content: post.content,
     created_at: post.created_at,
     status: "reviewed
    }
   end
   collection.to_json
end

在我的控制器中自定义所有json,我可以访问current_user