Rails 3 создает и усредняет несколько массивов

У меня есть две модели клиентов и отчетов. Клиент имеет_ множество отчетов, а отчет принадлежит_ клиенту. У Клиента есть: атрибут специальности (врач, стоматолог, юрист), а в Отчете - атрибут: сумма. Для каждого Клиента в календарном квартале создается 4 Отчета в год.

Что я хочу сделать, так это уметь усреднять: суммы по записям для данной специальности: говорят юристы. Я могу получить один большой массив с этими значениями из этого конкретного: специальности, как это:

Quarter.includes(:client).where('clients.specialty=?','Lawyer').map(&:amounts)%>

Мне интересно, есть ли способ напечатать массив для каждого клиента с этим: speciality, а затем усреднить их в другом массиве. Должен ли я использовать цикл здесь, как это:

<% Quarter.includes(:client).where('clients.specialty=?', 'Lawyer').each do |c| %>
<%= c.amount  %>
<% end %>

Если да, то как мне выделить его так, чтобы вместо одного огромного массива они были отдельными в зависимости от клиента, которому он принадлежит?

1 ответ

Решение

Вы можете использовать group метод.

Для каждой специальности:

Quarter.includes(:client).group('clients.specialty').average('quarters.amounts')

Это вернет OrderedHash какой ключ является specialty столбец, указанный в group и значение представляет собой соответствующие средние суммы

Для каждого клиента:

Quarter.includes(:client).group('clients.id').average('quarters.amounts')
Другие вопросы по тегам