Rails 3 создает и усредняет несколько массивов - PullRequest
0 голосов
/ 24 ноября 2011

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

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

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

Мне интересно, есть ли способ напечатать массив для каждого Клиента с этим: специальности, а затем усреднить ихв другом массиве.Использую ли я здесь цикл, подобный следующему:

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

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

1 Ответ

2 голосов
/ 24 ноября 2011

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

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

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

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

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

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