Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails find all with association

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 :)

like image 853
aaronrussell Avatar asked Feb 27 '23 02:02

aaronrussell


1 Answers

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
like image 180
mikej Avatar answered Mar 08 '23 16:03

mikej