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
这不是完美的解决方案,但它是有效的