views:

86

answers:

1

I have what I think is a very simple problem (famous last words)...

I have a Category model that has_and_belongs_to_many Events. I want to construct a simple and efficient query that finds all categories that have 1 or more events. (using Rails 3)

I'm sure I'm having a dumb moment here - any help appreciated :)

+1  A: 

How about:

Category.find :all,
  :conditions => 'id in (select distinct category_id from categories_events)'

You could also add this as a named scope to your Category class so that you can say Category.with_events e.g.

class Category < ActiveRecord::Base
  named_scope :with_events, 
    :conditions => 'id in (select distinct category_id from categories_events)'
end
mikej
Thank you, did the trick nicely.
aaronrussell