Find Products matching ALL Categories (Rails 3.1)

后端 未结 2 955
情书的邮戳
情书的邮戳 2021-01-03 17:01

I am struggling with an ActiveRecord query in Rails 3.1.1.

I have 2 models, Product and Category, with a has_and_belongs_to_many from Product to Category (a Product

2条回答
  •  挽巷
    挽巷 (楼主)
    2021-01-03 17:41

    You can do this with a having clause:

    @ids = [1,5,8]
    query = Product.select('products.id,products.name').joins(:categories) \
                   .where(:categories => {:id => @ids}) \
                   .group('products.id, products.name') \
                   .having("count(category_products.category_id) = #{@ids.length}")
    

提交回复
热议问题