0

我对 CanCan 有以下疑问:

如果我有不同的用户角色并且每个人都有一个权重(他们的 id),我是否也可以拥有不同的资源和他们的相应角色?

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

角色:

  • 管理员 => 3
  • 作家 => 2
  • 读者 => 1
  • 基本 => 0

问题 1 的示例:

资源:

Resouce1 具有角色 Writer

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

问题 2 的示例:

资源2 => 0

所有用户都可以访问 Resource2

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

4

1 回答 1

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

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

于 2013-01-16T21:46:11.613 回答