我有产品模型和产品类别模型。并且这些之间存在 habtm 。
我有类似'男士'和'牛仔裤'的类别,我想过滤这些。对男人做过滤是没问题的,但我需要过滤多个参数(男士和牛仔裤)。我尝试了一些变化,但我坚持这一点。
这是我到目前为止所拥有的......
Product.joins(:product_categories).where(['product_categories.id = 5 and product_categories.id = 6'])
谢谢你的时间!
答案 0 :(得分:3)
如何像这样编写它并传递你想要过滤的id数组?
Product.joins(:product_categories).where(['product_categories.id in (?)', _product_categories_ids ])
答案 1 :(得分:2)
这是选择男士和牛仔裤而不是男士或牛仔裤的解决方案:
@products = Product.scoped
@product_category_ids.each.with_index do |product_category_id, index|
@products = @products.joins("INNER JOIN product_categories_products pcp#{index} ON pcp#{index}.product_id = products.id AND pcp#{index}.product_category_id = #{product_category_id}")
end