Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 许可轨道的替代方案?_Ruby On Rails_Gem - Fatal编程技术网

Ruby on rails 许可轨道的替代方案?

Ruby on rails 许可轨道的替代方案?,ruby-on-rails,gem,Ruby On Rails,Gem,有人知道放纵的替代品吗?或者其他在功能方面比较好的宝石?我不知道它是否符合“基于模型”的条件,但你看过CanCan吗 编辑: Cancan已经停止了(非官方的),一位贡献者创建了一个名为Cancancan的新项目 如果用户的角色更复杂,我更喜欢声明式授权而不是cancan 使用声明性授权可以定义模型和方法的基于角色的授权 您可以定义模型的权限以及模型中的方法。如果满足某些条件,您可以进一步限制权限,例如,您可以指定仅当对象的某个属性具有特定值时才应用某些权限 下面是一个示例,其中规定普

有人知道放纵的替代品吗?或者其他在功能方面比较好的宝石?

我不知道它是否符合“基于模型”的条件,但你看过CanCan吗

编辑:

Cancan已经停止了(非官方的),一位贡献者创建了一个名为Cancancan的新项目


如果用户的角色更复杂,我更喜欢声明式授权而不是cancan


使用
声明性授权
可以定义模型和方法的基于角色的授权

您可以定义模型的权限以及模型中的方法。如果满足某些条件,您可以进一步限制权限,例如,您可以指定仅当对象的某个属性具有特定值时才应用某些权限

下面是一个示例,其中规定普通用户只能读取和修改其受雇于的公司的帐户(假设帐户以树状方式排列,例如带有“祖先”宝石)


更具体地说,我正在寻找一个基于模型的权限系统。我已经了解了声明式授权。它似乎无法对模型的实例应用权限?如果我错了,请纠正我。只是好奇,为什么你更喜欢声明式授权而不是CanCan?似乎大多数Rails社区都将CanCan作为头号授权宝石。
authorization do 
 role :user do
    # ...
    has_permission_on :accounts , :to => [:index, :show, :edit, :update] do
      if_attribute :id => is_in { user.employed_at_account.subtree_ids }
    end
    # ...
  end

  role :admin do
    # ...
    has_permission_on :accounts , :to => [:create, :new, :index, :show , :edit, :update  ]
    # ...
  end   
end