假设我们有3张桌子:
products (title, product_type_id)
product_types (title)
product_type_options (product_type_id, size)
我想加载产品,它的类型和&仅限特定product_type_options(product_type_options.size = 'XL'
)
是否可以在rails中进行N + 1查询?
类似的东西:
Product.includes( product_type: [product_type_options] )
.where("product_type_options.size = 'XL'")
我不能让它与where
参数一起使用。任何的想法?
答案 0 :(得分:3)
这应该有效
Product.includes(product_type: :product_type_options)
.where(product_types: { product_type_options: { size: 'XL' } })
答案 1 :(得分:1)
Product.includes(product_type: :product_type_options)
.where({ product_types: { product_type_options: { size: 'XL' } } })
很奇怪,但在where子句中添加额外的 {} 会使嵌套包含起作用。
答案 2 :(得分:-2)
您可以使用联接
Product.joins(product_type: :product_type_options).where("product_type_options.size = 'XL'")
答案 3 :(得分:-2)
请尝试这个,这是一个小的语法更改。我没有测试过。让我知道它是否有效:))
Product.includes( product_type: [product_type_options] )
.where("product_type_options.size" => 'XL')