首页 > 解决方案 > 如何在 Rails 中通过计数获得不同的记录?

问题描述

我正在使用当前架构在 Rails 6 上构建按需打印市场应用程序。

用户拥有具有许多 LineItem 的购物车,其中每个 LineItem 属于一个产品。因此,当用户将产品添加到购物车时,会创建一个 LineItem 并将其添加到购物车中。由于它是按需打印的,因此我决定为每种产品添加单独的 LineItem 以使退货更容易处理。

但是我想仅在带有计数的购物车页面上汇总和显示不同的产品。

假设我有三种产品 PA、PB、PC。我在购物车中添加了两次 PA 和三次 PB。我现在有两个 LA 和三个 LB。而不是显示LA, LA, LB, LB, LB我想(LA 2), (LB 3)在购物车页面上显示。

我能得到的最接近的是这个查询@line_items = current_user.cart.line_items.select(:product_id).distinct

标签: ruby-on-railsactiverecord

解决方案


您可以为此使用 railsgroup方法。以下是如何获取按计数分组的产品:

@line_items = current_user.cart.line_items.group(:product_id).count.reverse_each.to_h

推荐阅读