searching on a complex attribute in my model

Here is part of my User class:

has_many :permissions has_many :roles, :through => :permissions

This works very well, and I have a handy convenience method:

def has_role?(name) self.roles.find_by_name(name) ? true : false end

However, I'm trying to figure out how to search the RoR way based on the role and some other criteria. For example, if I want to search for all users whose first name is Bob and have a role 'admin', what would I type in the conditions part of the query to filter by role? I know that with a User.find... query, I can no longer use the "self" keyword to call an instance method.

You going to have to use a join so that you can have conditions on both tables eg

User.find :all, :joins => :roles, :conditions => [" = ? AND = ? ", 'admin', 'Bob']

Or you also do it less verbosely by reversing that: Role.find_by_name ('admin').users.find :all, :conditions => {:name => 'Bob'}


Thanks a lot!

Frederick Cheung wrote: