将单个属性添加到模型的Json中

时间:2013-05-23 21:32:14

标签: ruby-on-rails json ruby-on-rails-3

我的一个控制器中有以下代码;

render :json => Article.order("ID Desc").limit(3)

输出一系列文章,如:

[{"id":1, "content":"Blah"},{"id":2, "content":"Blah"}, {"id":3, "content":"Blah"}]

我想要做的就是为每个模型添加count属性。所以它会是这样的:

[{"id":1, "content":"Blah", "count":3},{"id":2, "content":"Blah", "count":1}, {"id":3, "content":"Blah", "count":6}]

无论如何在我的控制器中执行此操作而不覆盖as_json方法?

我在另一个问题中看到了一个merge方法,所以我尝试了这个:

render :json => Article.order("ID Desc").limit(3).merge(:count => 2)

没有运气。

1 个答案:

答案 0 :(得分:1)

你最好自己处理这个json,但不是to_json方法(Arrays或active_record)

articles = Article.order("ID Desc").limit(3)
render :json => articles.map { |article|  
  {
    :id => article.id,
    :content => article.content, 
    :count => 3 # or 2 or 1
  }
}