mar*_*rto 2 ruby activerecord ruby-on-rails-3
我有2个型号
Category
- id
- name
Run Code Online (Sandbox Code Playgroud)
和
Transaction
- id
- category_id
- amount
Run Code Online (Sandbox Code Playgroud)
我想找到每个类别的所有交易的总和.我知道我可以获得一个caterogies列表,然后使用category_id得到所有交易的总和,但它会做20多个查询.
有没有办法在一个查询中完成所有操作?
编辑:我想最终得到[[category1,sum],[category2,sum]]的列表.
Transaction.group(:category_id).sum(:amount)
Run Code Online (Sandbox Code Playgroud)
这将返回类似于此的哈希:
{CATEGORY_ID => SUM_OF_TRANSACTIONS, ....}
Run Code Online (Sandbox Code Playgroud)
要么
{1 => 100.0, 2 => 350.0, etc.}
Run Code Online (Sandbox Code Playgroud)
要获得实际Category名称:
Transaction.includes(:category).group("categories.name").sum(:amount)
# => {"Category1" => 100.0, ...}
Run Code Online (Sandbox Code Playgroud)