我有一份销售信息表,每个产品每年每个月都有12条记录。唯一的唯一价值是销售总额。
#<AccountMarginTarget id: 1, product_id: "123", sales: 2000>
#<AccountMarginTarget id: 2, product_id: "123", sales: 50>
#<AccountMarginTarget id: 2, product_id: "123", sales: 37>
#<AccountMarginTarget id: 2, product_id: "22", sales: 47>
#<AccountMarginTarget id: 2, product_id: "22", sales: 74>
我知道我可以使用.group检索consolodated数据,例如:
YearSales.group(:product_id).sum(:sale_total)
但是当在视图中显示所有内容时,拥有12条记录的列表很麻烦。我看过.join .group .uniq
等等 - 但我仍然感到困惑,因为只有一次列出重复项的最佳方法是什么?
道歉任何天真!
答案 0 :(得分:0)
所以,我已经弄明白这一点,并且觉得有点容易实现。我小时候感谢下面的任何改进:)我会更新,因为我查看了我的代码。
由于我的表中有很多重复项,首先我需要将它们单独列出
unique_ids = @sale_records.map(&:product_id).uniq.map
然后我遍历unique_id并从匹配它的数据库中检索第一个结果:
@unique_product_sale_records = unique_ids.collect.each do | unique_id |
SalesRecord.where(product_id: unique_id).first
end