2012-02-15 14 views
1

私は以下のオブジェクトを持っています:製品、評価、およびユーザー。ユーザーが所有する多数の製品(UserProductsとhas_many :throughの関係)をフィルタリングして選択し、ユーザーIDと正しい製品IDと一致するRatingsテーブルの特定の列を平均化しようとしています。複数の列を平均化する方法

だから、私の機能は、これらの線に沿って何かである:私はデータの配列全体を渡すことで、PRODUCT_IDを見つけようとしているので、私は、このことについて間違った道を進んだと思い

def find_rating(criteria) 
    product = self.products.find(:all, :conditions => ["criteria = ?", criteria]) 
    rating = self.ratings.where("product_id = ?", product).average(:overall) 
end 

複数の製品で構成されています。しかし、私はより伝統的なループを使うと思います。誰かがこの問題を解決するために正しい方向に向けることができますか?ありがとう!

答えて

1

productた場合には、それはあなたのコードにあるように見えるように、私はこれを行うだろう、単一のエントリです:

rating = self.products.find_by_criteria(criteria).ratings.average(:overall) 

それは製品の配列の場合、このメソッドはあなたを助けるかもしれない:http://apidock.com/rails/ActiveRecord/Batches/ClassMethods/find_each

+0

申し訳ありません遅い受け入れのために、彼らはここで5分待ってから、次にログインするまで時々それを忘れてしまいます。でもありがとう!私はfind_eachメソッドを使用しています! – Justin

関連する問題