新手问题 cancan 能不能定义权限组或权限别名?

kikyous · 2012年08月16日 · 最后由 pishilong 回复于 2012年09月08日 · 2898 次阅读
if user.manage?
    can :manage, [Model1,Model2,Model3]
end

能不能在这里定义一个权限组 比如:

can :manage, [Model1,Model2,Model3] as :group1

这样的

在 view 中直接就可以检查有没有 group1 组权限

can? :manage ,:group1

或者直接给权限一个别名,在 view 中自动加一个 helper

can_group?

可以自己写方法实现

可以自己写方法实现

你的需求那可以根据自己的需求写方法实现。 def group 或者根据文档里的:

class Ability
  include CanCan::Ability

  def initialize(user)
    @user = user || User.new # for guest
    @user.roles.each { |role| send(role) }

    if @user.roles.size == 0
      can :read, :all #for guest without roles
    end
  end

  def manager
    can :manage, Employee
  end

  def admin
    manager
    can :manage, Bill
  end
end

如果需要这样的话,是不是 RBAC 的角色设置或者权限颗粒度本身就有问题。。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号