【问题标题】:ActiveRecord: How do I find records by all of their associated records?ActiveRecord:如何通过所有相关记录查找记录?
【发布时间】:2012-03-09 17:44:50
【问题描述】:

使用 ActiveRecord,您可以将字段和数组传递到 WHERE,如下所示:

Product.joins(:category).where('category.id' => [x,y,z])

(在这种情况下,产品与类别具有多对多关系)

这使用 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,仍然无法让它工作。仍然认为可能有另一种方法可以做到这一点。

【问题讨论】:

    标签: sql ruby-on-rails ruby-on-rails-3 activerecord many-to-many


    【解决方案1】:

    还没有尝试过......但下面的内容应该会给你提示开始 -

    Product.joins(:categories).select("products.*, GROUP_CONCAT('categories.id') as category_ids").group('products.id').having('category_ids = ?', [1,2,3])
    

    【讨论】:

      【解决方案2】:

      这个怎么样:

      Product.joins(:category)
          .where('category.id = ? AND category.id = ? AND category.id = ?',x,y,z)
      

      【讨论】:

        猜你喜欢
        • 2013-01-04
        • 1970-01-01
        • 2016-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多