根据rake任务中的属性有条件地计算平均值(Rails)

时间:2014-09-08 22:01:49

标签: ruby-on-rails ruby

我有一个要求,我需要根据销售的公司计算产品销售单位的平均值。

该方案是我们从旧数据库导入数据,并且在导入时我想根据新商品销售单位与现有商品的平均值之间的差异执行一些计算&#39 ;当他们在同一家公司出售时。

该模型名为Product,其属性为:

  • 姓名
  • 兴趣(已售出多少单位)
  • 公司(他们是什么公司 被卖掉了)

现在,我可以像这样计算模型中每家公司的平均值:

def self.average_interest(company)
        where(company: company).average(:interest)
    end

但现在我正在尝试对rake任务进行计算。

这是我提出的并且它无法正常工作:

@company = u.Company
#u.Company is the field name from the legacy database

        def average_interest
            Product.average(:interest, :conditions => ['company = ?', @company]) 
        end

有什么想法吗?

谢谢!

编辑:

已从' @ company'更新了但是@company返回的值仍然不正确

2 个答案:

答案 0 :(得分:0)

在rake任务中,您可以传入变量,如下所示:

def average_interest(company)
  Product.average(:interest, :conditions => ['company = ?', company]) 
end

unentered_legacy_companies.each do |u|
    average_interest(u)
end

答案 1 :(得分:-1)

在玩完游戏后,看起来只需要对原始代码进行微调即可。

只需在代码中将模型(Product)添加到查询中:

def average_interest(company)
    Product.where(company: company).average(:interest)
end

然后我将它存储在一个变量中:

 @company_average = average_interest(u.Company)