Rails,CanCan管理所有和其他角色


class Ability
  include CanCan::Ability
  def initialize(user)
    @user = user || User.new
    can :manage, :all
    can :custom_action, User, role: 'admin'
  end
end

并查看

if can? :custom_action, @user
  SHOW SOMETHING

如果总是显示"显示某些东西",不明白为什么会发生。

嗯,这是因为在你的能力等级中,你给了每个用户所有的权利。

您可能正在寻找这样的东西:

def initialize(user)
  @user = user || User.new
  can :manage, :all
  # When user is an admin, grant her extra privileges
  if @user.is_admin?
    can :custom_action
  end
end

这样,您可以有条件地定义能力(通过使用can

解决方案是:

类 能力 包括CanCan::能力 def 初始化(用户) @user = 用户 ||用户.新

can :manage, :all
cannot :custom_action, User, role: 'admin'

结束结束

在视图:

if can? :custom_action, @user
return 
  user = true
  admin = false

这不是完美的解决方案,但它是有效的

相关内容

  • 没有找到相关文章

最新更新