Rails 3 ActiveRecord每个关联模型的模型总和

我有2个型号

Category - id - name 

 Transaction - id - category_id - amount 

我想找到每个类别的所有交易的总和。 我知道我可以获得一个caterogies列表,然后使用category_id得到所有交易的总和,但它会做20多个查询。

有没有办法在一个查询中完成所有操作?

编辑:我想最终得到[[category1,sum],[category2,sum]]的列表。

 Transaction.group(:category_id).sum(:amount) 

这将返回类似于此的哈希:

 {CATEGORY_ID => SUM_OF_TRANSACTIONS, ....} 

要么

 {1 => 100.0, 2 => 350.0, etc.} 

要获取实际的Category名称:

 Transaction.includes(:category).group("categories.name").sum(:amount) # => {"Category1" => 100.0, ...} 
 @category.transactions.sum(:amount) 

UPD 1

你可以与Ruby分享一些工作:

 Category.includes(:transactions).map{|c| [c.name, c.transactions.inject(0){|sum, t| sum += t.amount}]}