我有一系列交易,每个都看起来像......
Transaction:0xc3b8de4 @id="p5qvzdyQZeTyKk97ozbAhAeN0DwVgMh6re13Z", @account="N08xNQywYVUZaqoN9bwAI6BbeBrzyAfKmpzQe", @date="2014-02-03", @amount=100, @name="COMED 4131 Reference#", @meta={"is_risky"=>false, "location"=>{"store_number"=>"10818"}}, @location=nil, @pending=false, @score={"location"=>{}, "name"=>0.2}, @type={"primary"=>"unresolved"}, @category=nil, @category_id=nil>]}
我想按月对交易进行分组,所以我有这个......
@income_by_month = @payroll_transactions.group_by { |t| t.date.to_date.month })
按月对交易进行分组。
现在我需要每月交易中“金额”对象的总和。所以我需要每个月的总金额。这是我到目前为止,但我没有成功。
@payroll_transactions = @user.transactions.find_all { |t| t.category_id == '21009000' } #finds all payroll transactions for all months
@income_by_month = @payroll_transactions.group_by { |t| t.date.to_date.month }) #groups transactions into month groups
@income_by_month.map(&:amount).inject(0, &:+) #I need a method to sum the total of amounts for each month
提前致谢
答案 0 :(得分:1)
这应该做:
@income_by_month = @payroll_transactions.group_by { |t| t.date.to_date.month }).map do |month, transactions|
[month, transactions.sum(&:amount)]
end.to_h
答案 1 :(得分:0)
这个怎么样? compact
删除nil
值,不知道您是否需要。
@income_by_month.map(&:amount).compact.reduce(&:+)
如果我理解正确,您可能需要@income_by_month.month(:april).map...
,而您可能仍需要实施该功能。