0

製品セットの平均を計算するレーキ タスクがありますが、個々のセットの属性の計算と更新に問題があります。私がこれまでに持っているもの:

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])

4

1 に答える 1

0

最初のループ内に 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
于 2013-03-05T04:45:30.873 に答える