【发布时间】:2012-11-22 18:53:35
【问题描述】:
在我的应用程序中,我有几个用户角色;客户、销售人员、管理员和超级管理员。在我的技能课中,我根据这些角色定义了各种技能。
我目前为销售人员定义的唯一角色如下:
# Salesperson Abilities
if user.role == 'salesperson'
can :create, User, :role => 'customer'
end
不幸的是,以下检查总是返回 true,允许销售人员创建任何用户,而不管角色如何:
can? :create, User, :role => @user.role
我已经运行了许多测试,验证了当前用户的角色和正在创建的角色,无论我在:role 条件中放置什么角色,能力检查总是返回真。如果我完全删除该能力,或者如果我使用 cannot 定义,则检查返回 false,因此我知道正在应用条件中的能力。
我没有正确定义或检查能力条件吗?谢谢。
更新
我注意到,如果我尝试使用 authorize! :create, @user 授权该功能,则会应用条件。如果我在控制器类的顶部定义load_and_authorize_resource,它们也会被应用。似乎只有当我尝试将can? 方法与控制器内部的条件一起使用时,这些才会失败。
【问题讨论】:
标签: ruby-on-rails cancan