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... -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On Feb 20, 10:03 pm, Naija Guy <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> 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> Thanks for any help... > -- > Posted viahttp://www.ruby-forum.com/.--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Thanks a lot! Frederick Cheung wrote:> On Feb 20, 10:03�pm, Naija Guy <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> > 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-- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---