我有一个从一些查询中获得的对象数组,所有对象都具有以下属性:id、title 和数量。问题是:如何按 id 对数量求和并保存每个字段?我试过这个片段
h=Hash.new(0)
a.each do |el|
h[el.id] += el.quantity
end
就这样,但我失去了头衔!如何在哈希 h 中包含标题?
谢谢!
更新解决方案:
我认为 a 数组的数据可能有数千条记录,因此我决定预测聚合以求和数量。感谢一个解决方案的例子,现在每次我从主表中获取记录块时,我都会以这种方式详细说明数据
@agg = Hash.new(Array.new)
master.scope.each do |mst|
recs = mst.select.........
recs.each do |el|
store = @agg[el.id].empty? ? 0 : @agg[el.id][1]
@agg[el.id] = [el.title, el.quantity+store]
end
end
最后,@agg 保存所有且仅聚合的数据。
如果有人可以提供更通用或更优雅的解决方案,请挺身而出。
谢谢大家。
乔治奥