假设我有这些记录,其中“ r_years”可以有任意数量的年份键:
Item.select('id','name','r_years').where(name:"N1")
...
"id" => 1, "name" => "N1", "r_years" => {"year2020" => "1","year2021" => "2", ...}
"id" => 2, "name" => "N1", "r_years" => {"year2020" => "2","year2021" => "3", ...}
...
如何获取每个年份键的r_years值的总和,如下所示:
@r_years_sum = {"year2020" => "3","year2021" => "5", ...}
谢谢。
您可以将结果映射为仅获取r_years
值,然后使用reduce并合并每年的每个值并将它们的值作为整数求和:
items.map do |item|
item['r_years']
end.reduce do |acc, item|
item.merge(acc) { |_, oldval, newval| (oldval.to_i + newval.to_i).to_s }
end
# {"year2020"=>"3", "year2021"=>"5"}