0

销售我的基本设置:
我有一个用户模型,它与工作日模型具有 has_many/belongs_to 关系。
Workday 模型具有称为“销售”和“日期”的属性。

我想要做的是在给定的时间跨度内将不同工作日实例的销售属性相加。我首先尝试将该用户的所有销售额加起来,结果是

NoMethodError: undefined method `sales' for nil:NilClass

代码如下所示:

def all_sales
  s = 0.to_f
  c = @user.workdays.count
  for i in (0..c)
    s += @user.workdays[i].sales
  end
end

最优雅的方法是什么?

编辑 1:错字,是user.workdays[i].sales,而不是.count。对于那个很抱歉。

4

1 回答 1

1

可以通过 Arel 完成

@user.workdays.sum(:sales)

您也可以查询特定的时间间隔

@user.workdays.where("date BETWEEN ? AND ?",start_date, end_date).sum(:sales)
于 2012-07-26T00:01:14.327 回答