我正在研究一个RoR项目,我对这个推荐用于我的目的的新宝石有点困惑,Rolify。据我了解,rolify与CanCan几乎完全相同,只不过它将能力(rolify的角色)持久化到数据库。但是,在整个Rolify维基上,我看到了使用Rolify和CanCan的说明。
基本上,我想知道Rolify和CanCan之间的区别是什么?我什么时候应该使用那个而不是另一个?
答案 0 :(得分:6)
CanCan用于从应用程序角度管理授权,可以让您将X控制器/操作限制为X用户。
如果你想深入细致的控制,你可以使用Rolify。 Rolify,超越简单
if user.role == :super_admin
# do something pretty cool stuff
elsif user.role == :admin
# do some more awesome stuff
允许您向资源添加角色。假设您有一个论坛应用程序,您希望用户能够在游戏板上拥有主持人角色。你可以使用rolify来
user = User.find(2)
user.add_role :moderator, Forum.where(type: 'Gaming')
Rolify还允许你通过使用类本身而不是实例(如果你想让用户成为所有电路板的主持人)来为一个类做这个。
user = User.find(2)
user.add_role :moderator, Forum
之后,它可以让您轻松查询资源/类,以找出谁可以访问什么。除了帮助您管理角色范围之外。
答案 1 :(得分:1)
CanCan是一个授权库,可让您设置有关谁可以执行或不执行某些操作的规则。
Rolify是一个角色库,可帮助您创建可在Cancan授权规则中使用的角色。