我对CanCan有以下问题:
如果我为用户设置了不同的角色,并且每个角色都有一个权重(他们的ID),我是否也可以拥有与其相应角色不同的资源?
只有当用户的权重大于或等于资源权重时,是否可以授予对每个资源的访问权限?例如:
资源:
Resouce1有角色作家
然后,只有具有Admin或Writer角色的用户才能访问
Resouce2 => 0
所有用户都可以访问Resource2
规则 (如果current_user.role_id< resource.role_id)无法看到资源
答案 0 :(得分:1)
当然可以。可以轻松配置Cancan来实现这一目标。我推荐Ryan Bates的Railscast http://railscasts.com/episodes/192-authorization-with-cancan
实际上是他的宝石。但他解释得非常好,并为你想要做的事情提供了一个良好的开端。
class Ability
include CanCan::Ability
def initialize(user)
can :update, Resource do |r|
r.resource_weight <= user.role_weight
end
end
编辑:附件是一些基本的想法代码。功能尚不明显,但给你一个想法。轨道演员将有助于理解它。