Как суммировать записи, сгруппированные по месяцам в Ruby on Rails - PullRequest
1 голос
/ 30 апреля 2019

У меня есть модель Дато , в которой есть столбец с именем Ingresos .

Мне нужно сгруппировать Ingresos по месяцам и суммировать всезаписей за один месяц вместе для каждого месяца.

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

Таким образом, я получаю только массив со всеми столбцами вместо суммы ингресо по месяцам.

Есть идеи?Спасибо, ребята!

1 Ответ

1 голос
/ 30 апреля 2019

Очень простым решением было бы использовать гем GroupDate . Таким образом, вы можете делать все, что вам нужно, прямо из вашей базы данных, вместо того, чтобы перебирать все записи в ruby:

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

Здесь вы можете увидеть запросы, происходящие из-под колпака: https://github.com/ankane/groupdate/blob/master/lib/groupdate/relation_builder.rb.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...