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
results = Product.joins(:category_products)
[1,5,8].each do |category|
results = results.where('category_products.category_id' => category)
end
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}")