在Rails中将重复记录显示为一个

时间:2017-05-19 15:23:16

标签: activerecord

我有一份销售信息表,每个产品每年每个月都有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等等 - 但我仍然感到困惑,因为只有一次列出重复项的最佳方法是什么?

道歉任何天真!

1 个答案:

答案 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