shah khan
shah khan

Reputation: 137

Setting roles for a users in rails with cancan

I am working on a rails application and it requires two different types of roles. One is Employee and other is Admin.

Cancan documentation says that it assumes there is a user or current_user method in the application.

So how can I use cancan to set roles for employee and manager in my app ?

Upvotes: 1

Views: 394

Answers (1)

Kashiftufail
Kashiftufail

Reputation: 10885

Do like this

write this in application helper

def is_employee?(user)
  emp_role = Role.find(:first, :conditions => ["name = ?", "Employee"])
  return user.roles.include?(emp_role)
end

def is_admin?(user)
  admin_role = Role.find(:first, :conditions => ["name = ?", "Admin"])
  return user.roles.include?(admin_role)
end

And abily look like this

     class Ability
       include CanCan::Ability
       include ApplicationHelper

    def initialize(user)
      # Define abilities for the passed in user here. For example:
       #
      user ||= Employee.new # guest user (not logged in)
      if is_admin?(user)
       can :manage, :all
       # cannot :manage, IpAddress
     elsif is_employee?(user)

      #your code
     end

For define roles see it

   http://stackoverflow.com/questions/10222400/rails-adding-an-admin-role-using-devise-who-can-see-all-the-users/10222813#10222813

It sure works...

Upvotes: 3

Related Questions