2012-02-15 71 views
1

我包含以下對象:產品,評分和用戶。我正在嘗試篩選並選擇多個用戶擁有的產品(通過與UserProducts的關係has_many :through),並對與其用戶標識和正確的產品標識匹配的評級表進行平均。如何平均Rails中的多列

所以,我的功能就是沿着這些路線的東西:

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

我想我會對此錯誤的方式,因爲我試圖通過傳遞數據的整個數組找到PRODUCT_ID由多個產品組成。但是,我想到了使用更傳統的循環,這似乎令人費解。有人能指出我解決這個問題的正確方向嗎?謝謝!

回答

1

如果product是一個條目,因爲它似乎是在你的代碼,我這樣做:

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

如果它是琳琅滿目的商品,這種方法可以幫助你:http://apidock.com/rails/ActiveRecord/Batches/ClassMethods/find_each

+0

對不起對於遲到的接受 - 他們有五分鐘在這裏等待,然後我有時候會忘記它,直到我下次登錄。但是謝謝你!我正在使用find_each方法! – Justin 2012-02-16 23:01:45