CanCan gem |不能:索引,用户

时间:2010-03-02 22:04:13

标签: ruby-on-rails cancan

非常基本的用户模型,我希望管理员用户:管理所有

否则不能: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

如何阻止所有用户被阻止使用用户索引?

此致

1 个答案:

答案 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,用户)。