Rails cancan(角色重量)

时间:2013-01-16 21:42:54

标签: ruby-on-rails cancan

我对CanCan有以下问题:

如果我为用户设置了不同的角色,并且每个角色都有一个权重(他们的ID),我是否也可以拥有与其相应角色不同的资源?

只有当用户的权重大于或等于资源权重时,是否可以授予对每个资源的访问权限?例如:

角色:

  • Admin => 3
  • Writer => 2
  • Reader => 1
  • 基本=> 0

问题1的示例:

资源:

Resouce1有角色作家

然后,只有具有Admin或Writer角色的用户才能访问

问题2的示例:

Resouce2 => 0

所有用户都可以访问Resource2

规则     (如果current_user.role_id< resource.role_id)无法看到资源

1 个答案:

答案 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

编辑:附件是一些基本的想法代码。功能尚不明显,但给你一个想法。轨道演员将有助于理解它。