根据rake任务中的属性(Rails)有条件地计算平均值
我有一个要求,我需要根据销售的公司计算产品销售单位的平均值。
方案是我们从遗留数据库导入数据,导入时我想根据新项目销售单位与现有项目平均值之间的差异进行一些计算,当它们在同一家公司出售时。
该模型称为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但是返回的值仍然不正确
在你的rake任务中你可以传入变量,所以像这样:
def average_interest(company) Product.average(:interest, :conditions => ['company = ?', company]) end unentered_legacy_companies.each do |u| average_interest(u) end
玩完之后,看起来只需要对原始代码进行微调即可。
只需在代码中将模型(Product)添加到查询中:
def average_interest(company) Product.where(company: company).average(:interest) end
然后我将它存储在一个变量中:
@company_average = average_interest(u.Company)