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 => ["roles.name = ? AND users.name = ? ", 'admin', 'Bob']
Or you also do it less verbosely by reversing that: Role.find_by_name ('admin').users.find :all, :conditions => {:name => 'Bob'}
Fred