2012-11-19 24 views
0

我的目標是增加一個屬性,JSON作用域,這樣的代碼:如何在Rails中加入JSON作用域屬性3

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} } 

但它不工作...

有什麼建議嗎? 非常感謝!

+1

我很確定你沒有正確使用渲染,沒有「包含」選項。你究竟想要做什麼? –

+0

在我的用戶JSON我想得到,並非來自該用戶的所有評論,但只有最好的評論:Reviews.best。 例如user:「{user_id:1,name:vincent,reviews:[{r1},{r2},{..}]}儘管用戶'vincent'有50條評論! ? 謝謝 – vpoulain

回答

0

好的,我已經想通了!這是一個解決方案: 用戶模型中,我們可以添加一個虛擬屬性像

def best_reviews 
    self.reviews.best 
end 

然後當我們創建JSON,我們可以添加:

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

,它工作!但我不知道這是否是最好的解決方案