非常基本的用户模型,我希望管理员用户:管理所有
否则不能:index,User和其他一些选项,但是当我尝试阻止非管理员用户查看用户索引时,admin用户也无法访问。
这是我的能力.rb
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new #guest user
can :manage, :all if user.role == "admin" #if user.admin? can :manage, :all
can :assign_role, User
else
can :read, :all
can :create, User
cannot :assign_role, User
cannot :index, User
can [:show, :edit, :update], User do |current_user|
user.id == current_user.id || user.role == "admin"
end
end
end
如何阻止所有用户被阻止使用用户索引?
此致
丹
答案 0 :(得分:3)
代码中if-else出错了。
if user.role == "admin"
can :manage, :all
can :assign_role, User
else
can :read, :all
can :create, User
cannot :assign_role, User
cannot :index, User
can [:show, :edit, :update], User do |current_user|
user.id == current_user.id || user.role == "admin"
end
end
而且你也不必拒绝非管理员用户明显分配角色(不能:assign_role,用户)。