0

我的目标是在 JSON 范围内添加一个属性,这是一些代码:

User <ActiveRecord::Base
   has_many :reviews

Review<ActiveRecord::Base
   scope :best, lambda { |n| where('reviews.rating > ?',n} 

在我的 UsersController 中,我想做这样的事情:

format.json{
      render :json => @user.to_json :include=> :reviews.best

我也尝试过类似的东西:

format.json{
      render :json => @user.to_json :include =>{ :reviews => {:method => best} }

但它不起作用...

有任何想法吗 ?非常感谢 !

4

2 回答 2

0

我建议您为此使用 gem,有Active Record Serializers可以满足您的需求,或者Rabl,有一个RailsCast

于 2012-11-19T13:05:26.103 回答
0

好的,我想通了!这是一个解决方案:在用户模型中,我们可以添加一个虚拟属性,例如

def best_reviews
   self.reviews.best
end

然后当我们创建 json 时,我们可以添加:

format.json{
  render :json => @user.to_json :methods => %w(best_reviews)
}

它确实有效!但我不知道这是否是最好的解决方案

于 2012-11-19T14:04:04.577 回答