【问题标题】:Rails calculate averagesRails 计算平均值
【发布时间】:2013-03-05 04:27:26
【问题描述】:

我有一个 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

我试图基本上找到平均值并更新Rating.find(:all, :conditions =&gt; ["rating_set = ? and product_id =?", 45 ,product.id]) 检索到的每个集合的product_rating

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2


    【解决方案1】:

    尝试将 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 视为单个值数组。
    猜你喜欢
    • 1970-01-01
    • 2013-01-14
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多