我是RoR的新手,正在使用CanCan进行授权。我想知道我是否必须明确用户可能拥有的每一项能力。
我可能不够清楚,所以我会发布一些代码来帮助说明我的问题。
if user.is_admin?
can :manage, all
end
if user.is_director?
can :update, Camp
end
在这种情况下,导演是否只能更新营地?或者我是否必须表示他/她具体不能做什么?
提前致谢。
答案 0 :(得分:0)
如果我记得你实施CanCan的那一刻,你必须明确,只要你在匹配的控制器中调用authorize_resource
(或load_and_authorize_resource
)。
是的(如果你在CampController
中调用一个授权方法)。
(导演角色也不应与管理员角色重叠;)如果是,它只是获得所有权限。不是:all
吗?)
答案 1 :(得分:0)
如果您向check_authorization
添加了ApplicationController
,那么肯定会锁定所有控制器操作,除非被skip_authorization_check
明确覆盖。
请参阅围绕此问题的GitHub讨论。