Has_many :through and named_scope

Hi
I have the models roles, users and user_roles. The relationship among
them is

user.r

user has_many user_roles
user has_many roles, :through => :user_roles

role.rb

role has_many user_roles
role has_many users, :through => :user_roles

user_role.rb

belongs_to :user
belongs_to :role

 Suppose a login user1 has roles [admin, staff] And login user2 has

only one role say [participant] Now how can I check the cases

1)a login user is an admin or staff
2) a login user has_role participant?

  And also I would like to know whether this can be written using

named scopes.(I am totally new to named scopes)

Thanks in advance
Tom

user1.roles returns an array of roles.
The array class has a function “include?(obj)” that returns true or
false.

Something like this should work:
user1.roles.include?(Role.find_by_name(‘admin’))

Named scopes are not ment for stuff like this.
You can create a function on the user model “is_admin?” for the code
above. That way if how an admin is defined changes, you only need to
update the code in one place.

Better off saying !roles.find_by_name(“admin”).blank?
Saves on SQL

Blog: http://random8.zenunit.com/
Twitter: http://twitter.com/random8r
Learn: http://sensei.zenunit.com/
New video up now at http://sensei.zenunit.com/ real fastcgi rails
deploy process! Check it out now!

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs