【发布时间】:2021-04-24 02:56:57
【问题描述】:
我正在使用当前架构在 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
【问题讨论】:
-
您可以按 product_id 分组以获取计数。
current_user.cart.line_items.group(:product_id).count但不是在一个购物车中为单个产品添加多个 LineItem,而是在LineItem中引入count列,并且每个购物车的每个产品只有一个 line_item。
标签: ruby-on-rails activerecord