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

kikyous · August 16, 2012 · Last by pishilong replied at September 08, 2012 · 2887 hits
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 的角色设置或者权限颗粒度本身就有问题。。

You need to Sign in before reply, if you don't have an account, please Sign up first.