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.
Thanks for any help…
On Feb 20, 10:03 pm, Naija G. [email protected]
wrote:
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