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

わかりました!これは解決策です: User モデルでは、次のような仮想属性を追加できます

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 に答える