2016-07-22 51 views
0

我擁有屬性爲:quarter:revenue的發票的活動記錄。對於季度 的例子是「2015年第一季度」,「2015年第二季度」,「Q4 2014」等。每個uniq屬性的ActiveRecord總和

我想要做的是讓每個:quarter地圖和:revenue每個獨特季度的總和。

我知道如何獲得一個地圖的每個唯一:quarter

@bills.map {|bill| bill.quarter}.uniq 

,我知道如何使一個地圖,求和:revenue

@bills.map {|bill| bill.revenue}.sum 

我如何結合這兩個?

+0

所以你試圖計算你每季度賺了多少錢? – siegy22

+0

這正是我想要做的,是的! :) – rippster

回答

2

您可以直接使用ActiveRecord查詢。

@bills.group(:quarter).sum(:revenue) 
+0

我注意到'@ bills'不是一個ActiveRecord。其實我從JSON中得到它,模型是非ActiveRecord的。所以'@票據'是一個對象數組。我怎麼能得到與此相同的結果? – rippster

+0

您可以使用Enumerable方法:'#group_by'以及'#transform_values'和'#sum',它們分別通過Rails添加到Hash和Enumerable類中: '@ bills.group_by(&:quarter)。 transform_values {| v | v.sum(&:收入)}' – Ivan