使用ActiveRecord,您可以将字段和数组传递到WHERE,如下所示:
Product.joins(:category).where('category.id' => [x,y,z])
(在这种情况下,Product与Category有很多关系)
这使用IN运算符查找ID为x,y或z的所有类别的产品
我想要的是找到ID为x,y和z的所有类别的产品。我知道你可以产生这样的结果:
Product.joins(:category).where('category.id' => x).where('category.id' => y).where('category.id' => z)
换句话说,我想找到提供所有类别的产品。
我觉得我可以做更简单的事情。有什么想法吗?
更新:我相信this question is relevant,仍然无法让它发挥作用。仍然认为可能还有另一种方法可以做到这一点。
答案 0 :(得分:0)
这个怎么样:
Product.joins(:category)
.where('category.id = ? AND category.id = ? AND category.id = ?',x,y,z)
答案 1 :(得分:0)
没有尝试过...但是下面的内容会给你一些提示 -
Product.joins(:categories).select("products.*, GROUP_CONCAT('categories.id') as category_ids").group('products.id').having('category_ids = ?', [1,2,3])