Сбор группы Rails и суммирование определенных полей - PullRequest
0 голосов
/ 16 января 2019

Новичок в Rails, но я не могу найти эту функцию!

Скажем, у вас есть коллекция счетов, которая включает в себя идентификатор, название компании и сумму счета. Почему-то есть несколько компаний с одинаковым названием. Вы хотите создать матрицу 1xn, где каждая строка содержит данные о компании с уникальным названием.

Как вы можете сгруппировать компании с одинаковым названием и сложить итоговые суммы их счетов. Вам все равно, какой идентификатор сохраняется в строке Это единственный способ использовать Group + Map?

, например

[1523, 'Red Roses Inc', 1300.00],
[4126, 'Blue Birds LLC', 110.00],
[846, 'Red Roses Inc', 400.00],

становится

[1523, 'Red Roses Inc', 1700.00],
[846, 'Blue Birds LLC', 110.00],

1 Ответ

0 голосов
/ 16 января 2019

, если компания и счет в одной таблице, например, для вашей модели, - Счет

Invoice.group(:company_name).sum(:total)

# sample implementation how to get data and print the result

data_result = Invoice.group(:company_name).sum(:total) 

data_result.each do |v|
  puts "company #{v[0]} total number #{v[1]}"
end

# this will print
# company Red Roses Inc total number 1700
# company Blue Birds LLC total number 110
...