以下结构
Production
belongs_to :offer
has_many :production_positions
has_many :products, through: :production_positions
Product
has_many :production_positions
has_many :productions, through: :production_positions
ProductionPosition
belongs_to :production
belongs_to :product
现在我想获得包含product_id的所有商品1.我如何查询数据库?
获得制作非常简单:
Production.includes(:products).where("products.id" => 1)
但我如何获得引用的优惠?
Offer.includes(:production).includes(:products).where("products.id" => 1)
上面的行会产生以下错误: 在商品
上找不到名为“产品”的协会答案 0 :(得分:0)
在has_many :products, through: :production
课程中添加Offer
,然后尝试以下操作:
Offer.select('offers.*').joins(:products).where('products.id = ?', 1)
我认为你的has_one :production
课程中有Offer
。您可以添加范围来执行查询:
class Offer < ActiveRecord::Base
has_one :production
has_many :products, through: :production
scope :with_product_id, ->(id) do
select('offers.*').
joins(:products).
where('products.id = ?', id)
end
end
示例(与产品1一起提供):
Offer.with_product_id(1)