2016-03-12 3 views
0

Я использую rollify, CanCanCan и разрабатываю.Rolify + CanCanCan: запретить пользователю «admin» изменять/создавать «superadmin»

У меня есть 3 типа пользователей: - SuperAdmin - Администратор - Нормальный

Я хочу, чтобы предотвратить «Admin» пользователей, чтобы изменить пользователя на «суперамин» роль или создать/изменить пользователя с «SuperAdmin "роль.

Каков наилучший способ сделать это? В классе умения или с каким-либо предшествующим фильтром?

Вот мой файл Возможность упрощен только пользовательская часть:

class Ability 
    include CanCan::Ability 
    def initialize(user) 

     alias_action :create, :read, :update, :destroy, :to => :crud 

     user ||= User.new # guest user (not logged in) 

     if user.has_role? :normal 
      can :read, User 
     elsif user.has_role? :admin 
      can :crud, User 
     elsif user.has_role? :superadmin 
      can :manage, :all 
     else 
      cannot :manage, :all 
     end 
    end 
end 

ответ

0

На основании документации here

cannot :edit, User, User.all do |user| 
    user.has_role?(:superadmin) 
end