【问题标题】:How to get distinct records with count in Rails?如何在 Rails 中通过计数获得不同的记录?
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 2012-10-31
    相关资源
    最近更新 更多