如何在Ruby on Rails中对按月分组的记录求和

时间:2019-04-30 19:17:32

标签: ruby-on-rails ruby

我有一个模型 Dato ,其中有一个名为 Ingresos 的列。

我需要按月对 Ingresos 进行分组,然后将每个月一个月内的所有记录汇总在一起。

@datos = Dato.all
@datos_months = @datos.group_by { |t| t.date.beginning_of_month }
@datos_months_ingresos = @datos_months.sum(:ingresos)

这样,我只得到一个包含所有列的数组,而不是按月的总和。

有什么想法吗?谢谢大家!

1 个答案:

答案 0 :(得分:1)

一个非常简单的解决方案是使用宝石GroupDate。这样,您可以直接从数据库执行所需的所有操作,而无需遍历ruby中的所有记录:

Dato.group_by_month(:created_at).sum(:ingresos)

在这里您可以看到查询正在发生:https://github.com/ankane/groupdate/blob/master/lib/groupdate/relation_builder.rb