2013-11-14 42 views
0

我是RoR的新手,正在使用CanCan进行授权。我想知道如果我必须明确用户可能拥有的每一种能力。CanCan权限 - 他们必须明确吗?

我可能不够清楚,所以我会发布一些代码来帮助说明我的问题。

if user.is_admin? 
    can :manage, all 
end 

if user.is_director? 
    can :update, Camp 
end 

在这种情况下,导演是否只能更新一个阵营?或者我必须指出他/她明确无法做到的事情?

在此先感谢。

回答

0

如果我没记错的话,你实现CanCan的时候你必须明确,只要你在匹配的控制器中调用authorize_resource(或load_and_authorize_resource)即可。

所以是的(如果您拨打CampController中的授权方法之一)。

(此外,导演角色不应该与管理员角色重叠;)如果这样做,它只是获得所有权限。而且是不是:all?)

+0

是的它是:所有。我仍然习惯于语法;)感谢您的帮助,但我通过在控制器和视图层中控制访问权限来排序所有内容。 – Ryan

0

如果添加check_authorizationApplicationController,那么,它会默认被锁定了所有的控制器动作,除非skip_authorization_check明确覆盖。

请参阅此GitHub围绕此问题的讨论。

相关问题