嵌套其中on Rails的
比方说包括我们有3个表:嵌套其中on Rails的
products (title, product_type_id)
product_types (title)
product_type_options (product_type_id, size)
我要加载的产品,它的类型&只有特定product_type_options(product_type_options.size = 'XL'
)
是否有可能不施氮做+ 1在轨道查询?
喜欢的东西:
Product.includes(product_type: [product_type_options])
.where("product_type_options.size = 'XL'")
我不能让它使用where
参数工作。任何想法?
这应该工作
Product.includes(product_type: :product_type_options)
.where(product_types: { product_type_options: { size: 'XL' } })
您可以使用加入
Product.joins(product_type: :product_type_options).where("product_type_options.size = 'XL'")
请试试这个,这是一个很小的语法变化。我没有测试过它。让我知道,如果它的工作原理:)
Product.includes(product_type: [product_type_options])
.where("product_type_options.size" => 'XL')
答案就是这个问题的例子。那当时没有奏效。请改进您的答案或考虑删除它。 – Myonara
我的回答是改善或解决问题。请参阅我所做的更改。任何人都可以从变化中推断出解决他自己的类似于这篇文章的问题。 –
@Iceman接近...它没有看到“product_types”的原因是因为它需要被表示为where子句中显式的哈希值,然后将Ruby做正确的嵌套...
Product.includes(product_type: :product_type_options)
.where({ product_types: { product_type_options: { size: 'XL' } } })
奇怪,但添加在where子句使得嵌套额外{}包括工作。
你得到了什么错误?您需要从查询 –