使用联接的活动记录查询

Active record query using joins

我有三种不同的模型用户、订单、产品:-

class User < ActiveRecord::Base
  has_many :orders
  has_many :products
end
class Product < ActiveRecord::Base
      has_many :orders
end
class Order < ActiveRecord::Base
  belongs_to :user
  belongs_to :product 
end

如何使用一行活动记录查询查找用户订购的所有产品?

这个解释in the ActiveRecord documentation:

Product.joins(:orders).where(orders: { user_id: user.id })

此处的另一个选项是使用 has_many :through 关系:

添加到 User 模型

has_many :products, through: :orders

现在 user.products 成功了

终于通过这个搞定了

 Product.joins(:orders).where(order: { user_id: user.id })