Rails计算平均值
问题描述:
我有一个rake任务,我正在计算一组产品的平均值,但是我无法计算和更新每个集合中的个人的属性。我有什么至今:Rails计算平均值
task :calculate_rating => :environment do
total_rating = []
Product.find(:all, :joins => :rating_sets, :conditions => ["rating_set_id = ?", 45 ]).each do |product|
Rating.find(:all, :conditions => ["rating_set = ? and product_id =?", 45 ,product.id]).each do |ratings|
total_rating << ratings.rating
end
average = total_rating.inject(:+).to_f/total_rating.size
q = ProductRatingSet.find_by_product_id_and_rating_set_id(@product_id, 45)
q.update_attribute(:product_rating, average)
end
end
我试着去寻找基本上平均和更新product_rating
每个由Rating.find(:all, :conditions => ["rating_set = ? and product_id =?", 45 ,product.id])
检索集。
答
试图把total_rating阵列的初始化你的第一个循环
Product.find(:all, :joins => :rating_sets, :conditions => ["rating_set_id = ?", 45 ]).each do |product|
total_rating = []
Rating.find(:all, :conditions => ["rating_set = ? and product_id =?", 45 ,product.id]).each do |ratings|
total_rating << ratings.rating
end
average = total_rating.inject(:+).to_f/total_rating.size
q = ProductRatingSet.find_by_product_id_and_rating_set_id(@product_id, 45)
q.update_attribute(:product_rating, average)
end
这仍然好像total_rating被视为值的单个阵列内。 – Yogzzz 2013-03-05 06:24:06