【问题标题】:Rails 3 ActiveRecord query: find the number of this product that have been ordered by this userRails 3 ActiveRecord查询:查找该用户已订购的该产品的数量
【发布时间】:2011-04-01 01:54:00
【问题描述】:

我有一个order 模型belongs_to :user,一个product 模型,一个连接模型order_product

class OrderProduct < ActiveRecord::Base
  belongs_to :order
  belongs_to :product
end

order_product 模型有一个 quantity 列。

我如何知道用户u 订购了多少产品p?我想找到一个使用 rails 3 的活动记录查询语法并尽可能在数据库级别进行的解决方案。如有任何帮助,我将不胜感激。

【问题讨论】:

  • 好问题,有时很难找到这样的例子。

标签: ruby-on-rails ruby-on-rails-3 activerecord arel


【解决方案1】:

这应该可以解决问题:

u.order_products.where(:product_id => p.id).sum(:quantity)

这是一个单一的 SQL 查询,适用于显示一个产品。如果您要显示多个产品,那么您将按产品 ID 进行分组,从而为您提供一个哈希值,您可以从中进行查找。

【讨论】:

    【解决方案2】:

    如果你想使用 Rails 3 查询链,可以如下所示

    p.order_product.includes("order").where(:orders => {:user_id => 'user_id'}).sum(:quantity)

    试试看是否有效,也许我错过了什么

    【讨论】:

      猜你喜欢
      • 2015-05-12
      • 1970-01-01
      • 2011-11-11
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多