Rails ACL 使用修改后的先序树遍历

Posted

技术标签:

【中文标题】Rails ACL 使用修改后的先序树遍历【英文标题】:Rails ACL Using Modified Preorder Tree Traversal 【发布时间】:2011-12-19 15:19:00 【问题描述】:

是否有使用 MPTT(修改前序树遍历)作为管理权限的技术的 Rails ACL 插件/gem?

我正在寻找允许我创建角色、将用户分配给一个或多个角色、在角色级别和用户级别设置权限的 ACL。

我们目前使用 Cakephp,内置 ACL 是使用 Tree 行为(即 MPTT)构建的。我读过Rails 有acts_as_nested_set,它是MPTT。是否有任何使用acts_as_nested_set 的ACL 插件/gem?

最重要的是用户和角色权限可通过 GUI 进行编辑(保留在数据库中)。

【问题讨论】:

花了几天时间搜索,找不到用于实现权限树的 gem。打算从头开始做,但不能保证它会是一颗宝石。 【参考方案1】:

Ruby Gem ** ActiveAclPlus ** 似乎可以满足您的需求:

https://github.com/pschrammel/active_acl_plus

ActiveAclPlus 系统由访问对象组成,这些访问对象可以按访问组进行组织,它们相互请求权限。允许或拒绝访问权限由 ACL(访问控制列表条目)对象控制。访问对象和访问组可以是由acts_as_access_object 和acts_as_access_group 增强的任意ActiveRecord 模型类的实例。它们通过多态关联与 ACL 条目相关联。


我个人喜欢 Declarative Authorization Gem 很多 - 但这不会进行树遍历,但它至少允许从其他规则继承

【讨论】:

4 年没有新的提交。这颗宝石太旧了。 是的。对我没用。我从头开始实现了类似树的权限。结合传统的普通方法,它会产生良好的效果。 你打算把它变成宝石吗? 还没有。我没有这么多空闲时间。 这很简单,参见 Railscasts.com 第 303 和 301 集

以上是关于Rails ACL 使用修改后的先序树遍历的主要内容,如果未能解决你的问题,请参考以下文章

二叉树的先序遍历

求二叉树的先序遍历

二叉树的先序中序后序遍历

根据二叉树的先序遍历结果输出中序遍历

给出二叉树的先序和中序遍历,给出后序遍历

树的先序遍历的栈实现