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
如果总是显示“SHOW SOMETHING”,请不要理解为什么会发生这种情况。
答案 0 :(得分:1)
嗯,那是因为在你的能力课中,你给每个用户所有的权利。
你可能正在寻找这样的东西:
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
)
答案 1 :(得分:0)
解决方案是:
班级能力 包括CanCan :: Ability def初始化(用户) @user = user || User.new
can :manage, :all
cannot :custom_action, User, role: 'admin'
端 端
在视图中:
if can? :custom_action, @user
return
user = true
admin = false
这不是完美的解决方案,但它有效