Я пытаюсь суммировать массив усредненных целых чисел.
В моем помощнике есть следующие классы с примером возвращаемого ими массива:
def day_of_week_yard_activity
YardActivity.group_by_day_of_week(:date, format: "%A").joins(:line_transactions)
end
def full_deliver_avg
day_of_week_yard_activity.average(:full_deliver).map { |d,n| [d, n.to_f.round]}
end
def full_recieve_avg
day_of_week_yard_activity.average(:full_recieve).map { |d,n| [d, n.to_f.round]}
end
def empty_recieve_avg
day_of_week_yard_activity.average(:empty_recieve).map { |d,n| [d, n.to_f.round]}
end
def empty_deliver_avg
day_of_week_yard_activity.average(:empty_deliver).map { |d,n| [d, n.to_f.round]}
end => [["Sunday", 0], ["Monday", 1], ["Tuesday", 2], ["Wednesday", 1], ["Thursday", 2], ["Friday", 1], ["Saturday", 0]]
Я пробовал следующие, чтобы сгруппировать каждую позицию [0] и суммировать позицию [1] вместе, но я получаю случайную позицию [0] назад:
def averaged_summed_total_transactions
[full_deliver_avg, full_recieve_avg, full_deliver_avg, empty_deliver_avg].group_by(&:first).map { |d,n| [d, n.map(&:last).inject(:+)]}
end
=> [[["Sunday", 0], ["Saturday", 0, "Saturday", 0, "Saturday", 0, "Saturday", 0]]]
Я ожидаю получить массив, аналогичный следующее:
[["Sunday", 0], ["Monday", 4], ["Tuesday", 8], ["Wednesday", 4], ["Thursday", 8], ["Friday", 4], ["Saturday", 0]]
Я думаю, что неправильно понимаю group_by(&:first)
и / или (&:last).inject(:+)
.