1

我正在使用 rails 来尝试计算数据库中特定列的总数。我现在正在使用这个:

@total = Product.sum (:cost)

哪个有效并返回表中所有内容的总成本。如果我试图从已经在数组中的数据中做到这一点呢?例如:

@products = Product.where('date >= ? AND date <= ?', Date.today.beginning_of_month.to_datetime, Date.today.end_of_month.end_of_day.to_datetime)

然后你能在这一系列产品上做同样的事情吗?

希望有人能帮忙!塔。

4

2 回答 2

4

您可以简单地附加.sum到生成的 ActiveRecord 对象:

Product.where('date >= ? AND date <= ?',
 Date.today.beginning_of_month.to_datetime,
 Date.today.end_of_month.end_of_day.to_datetime).sum(:cost)

这将产生一个类似于

select sum(cost) from products where (date >= ... and date <= ...)
于 2013-01-07T17:54:02.403 回答
2

如果你已经有一个实例化的数组(不是关系对象),你可以使用注入:

@total = @products.collect(&:cost).inject {|sum, cost| sum += cost }

如果你有这种关系,meagar 的答案会更好。

于 2013-01-07T18:05:42.460 回答