0

У меня есть задача rake, в которой я вычисляю среднее значение для набора продуктов, однако у меня возникают проблемы с вычислением и обновлением атрибутов для отдельных каждого набора. То, что я до сих пор:Рельсы вычисляют средние значения

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 

Im пытаясь в основном найти среднее и обновить product_rating для каждого набора, который извлекается Rating.find(:all, :conditions => ["rating_set = ? and product_id =?", 45 ,product.id]).

ответ

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 
+0

Это все еще кажется, что total_rating в настоящее время рассматривается как единый массив значений. – Yogzzz

Смежные вопросы