如何对所有货币进行分组和汇总

时间:2017-03-05 20:18:35

标签: ruby-on-rails ruby activerecord ruby-on-rails-5

我希望标题是正确的。我需要汇总所有货币,即所有货币,等等,但不要将所有货币合并为一个总和。

基本上,如果我有2x $4和3x £10,则会$8£30

我有Income模型,其属性为:currency(字符串)和:amount(浮动):

我有什么作品,但我觉得它可以重构一下:

Income.all.group(:currency).count.map do |k,v|
  Income.where(currency: k).map.sum(&:amount)
end

这给了我一个总数。 OK-ISH。我需要更好的格式,例如哈希:

{
  USD => 8.0,
  GBP => 30.0
}

可能?请问怎么样?

1 个答案:

答案 0 :(得分:2)

我认为以下情况可以:

Income.group(:currency).sum(:amount)

SQL看起来像:

SELECT SUM(income.amount) AS sum_amount, currency AS currency
  FROM income
  GROUP BY income.currency