我有一个模型 Dato ,其中有一个名为 Ingresos 的列。
我需要按月对 Ingresos 进行分组,然后将每个月一个月内的所有记录汇总在一起。
@datos = Dato.all
@datos_months = @datos.group_by { |t| t.date.beginning_of_month }
@datos_months_ingresos = @datos_months.sum(:ingresos)
这样,我只得到一个包含所有列的数组,而不是按月的总和。
有什么想法吗?谢谢大家!
答案 0 :(得分:1)
一个非常简单的解决方案是使用宝石GroupDate。这样,您可以直接从数据库执行所需的所有操作,而无需遍历ruby中的所有记录:
Dato.group_by_month(:created_at).sum(:ingresos)
在这里您可以看到查询正在发生:https://github.com/ankane/groupdate/blob/master/lib/groupdate/relation_builder.rb。