2015-05-27 2 views
0

Привет Я написал этот кодКак включить переключатель случай в этом коде

class Ability 
    include CanCan::Ability 

    def initialize(employee) 
    employee ||= Employee.new 
    if employee[:role]== 'SUPER-ADMIN' 
     can :manage, :all 
    elsif employee[:role]== 'HR' 
     can :manage, :Employee 
     can :manage, :Interview 
    elsif employee[:role]== 'INVENTORY' 
     can :manage, :Inventory 
    else 
     can :read, :all 
    end 
    end 
end 

Теперь я должен дать переключатель случай вместо если другое условие что-то вроде этого

case role 
     when "SUPER-ADMIN" 
     can :manage, :all 
     when "HR" 
     can :manage, :Employee 
     can :manage, :Interview 
     when "INVENTORY" 
     can :manage, :Inventory 
     when "Employee" 
     can :read, :all 
    end 

Пожалуйста, руководство меня, как сделать это. Заранее спасибо

ответ

1

Вы почти у цели. Вы можете внести небольшое изменение в свой case, чтобы заставить его работать:

class Ability 
    include CanCan::Ability 

    def initialize(employee) 
    employee ||= Employee.new 
    case employee[:role] 
    when 'SUPER-ADMIN' 
     can :manage, :all 
    when 'HR' 
     can :manage, :Employee 
     can :manage, :Interview 
    when 'INVENTORY' 
     can :manage, :Inventory 
    else 
     can :read, :all 
    end 
    end 
end