在我的项目中,我有一个使用Devise身份验证的用户类。每个用户都有一个与之相关的角色。例如,经理是#1角色。Rails:cancancan宝石状态不起作用
角色是一个类,角色和用户之间有一个基于role_id的关联。因此,经理的角色ID为1.
我安装了cancancan gem来管理每个用户的权限。只有经理可以创建用户帐户。所以,我写这个的能力类:
def initialize(user)
user ||= User.new # guest user (not logged in)
if user.role_id == 1
can :manage, :user
else
cannot :manage, :user
end
end
在我的用户控制,我有这样的:
def new
@user = User.new
authorize! :manage, @user
end
问题是,当我登录我的经理,并尝试获取新的用户页面,我收到来自cancancan的消息,说我没有访问该页面的权限。
我不知道这是否是我的条件,或当我试图访问您的帮助user.role_id或...
感谢。
见cancancan宝石:https://github.com/CanCanCommunity/cancancan
编辑:
如果我的IDE说,它无法找到CURRENT_USER这是正常的吗?
另外,如果你在github上检查,有如何使用cancancan一个例子:
正如你看到的,有读取权限后@article。所以,我不认为我需要把CURRENT_USER代替@user
最后的:
问题是:user
,这是不正确的。当它是一个模型时,首先需要为模型的名称写一个大写字母,而不使用“:”。因此,而不是:user
,它应该是User
问题是:用户不正确。当它是一个模型时,首先需要为模型的名称写一个大写字母,而不使用“:”。所以,而不是:用户,它应该是用户 –