I am having problems writing conditions for a find request. Here is my situation:
Product has and belongs to many Categories
So I have join table: categories_products
I want to find all products that are not in category.id = 1. If they belong to category.id = 1 then I don't want them returned.
I have tried the following and non of them worked:
Product.find(:all, :conditions => "categories.id != 1", :include => :categories) Product.find(:all, :conditions => "categories_products.category_id != 1", :include => :categories)
Each of those still returned products in the category.id = 1
Any idea how I can accomplish this?
@products_not_in_category_1 = Product.find(:all, :include => :categories).map {|p| p.categories.include?(1) ? nil : p}.compact
Not very efficient if you have a lot of products/categories, but that should work I think... or something along those lines.
-philip