Ruby on rails 如何使用CanCan限制用户角色分配?
使用一些教程和屏幕广播的组合来设置Rails和CanCan以与Desive等一起工作。我已经建立了Ruby on rails 如何使用CanCan限制用户角色分配?,ruby-on-rails,devise,authorization,cancan,Ruby On Rails,Devise,Authorization,Cancan,使用一些教程和屏幕广播的组合来设置Rails和CanCan以与Desive等一起工作。我已经建立了用户,角色,并且用户角色的加入模型有很多:通过连接。我只希望一些用户能够分配某些角色,或者使用这些角色创建新帐户,等等 根据文档,我觉得这应该非常简单。我基本上是这样的: if用户 如果user.role?“管理员 can:管理、用户 elsif user.role?“副经理 can:管理,用户,角色:{name:['basic','premium']} 终止 其他的 can:创建、用户、角色:{n
用户
,角色
,并且用户角色
的加入模型有很多:通过连接。我只希望一些用户能够分配某些角色,或者使用这些角色创建新帐户,等等
根据文档,我觉得这应该非常简单。我基本上是这样的:
if用户
如果user.role?“管理员
can:管理、用户
elsif user.role?“副经理
can:管理,用户,角色:{name:['basic','premium']}
终止
其他的
can:创建、用户、角色:{name:['basic']}
终止
然后我会简单地用以下方法测试它:
- if can? :create, User, roles: { name: 'admin' }
= check_box 'user[role_ids]', 'admin'
或者,至少,这是要点。相信我,我尝试过单数、复数、role\u id
、role
、role:[]
。所以我不认为这是那么简单的事情。无论我做什么,都可以检查通过。每一次。毫无疑问
我在CanCan上找到了很多东西,但我似乎找不到这个具体的东西。是因为我试图滥用CanCan,而我应该以其他方式这样做吗?或者……我该怎么做?我认为这不应该在CanCan中完成,因为CanCan的控制粒度正在发挥作用。因此,如果您真的想使用CanCan来实现您的意图,我认为您应该将“角色更改”作为方法调用,而不是表单提交
控制器文件
class UserController
def basic
user.change_role_to_basic
end
def premium
user.change_role_to_premium
end
end
能力档案
can :basic, User do
end
can :premium, User do
end
但这并不是那么简单,不是吗?我的意思是,在他们的文档中,这个例子怎么样:can:manage,Project,:group=>{:id=>user.group_-ids}