2012-02-29 40 views
1

我希望能够让我的管理员用户能够控制帐户中标准用户可以执行的几乎所有操作。当为它们创建组权限时,最好是拥有超过一百行布尔值的巨型表格,还是将所有权限存储在数据库文本字段中存储的哈希上更好?也许只能存储他们不能做的事情?或者他们能做的事情? (无论哪个列表通常更小?)我想在我的rails应用程序中实现组权限。什么是最有效的方法?

有没有一个标准的方法来做到这一点在webapps?

我会存储的一些示例:

can_delete_object?
can_edit_object?
can_create_object?
can_delete_minions_object?
can_delete_managers_object?

我真的很喜欢can_?可以使用的语法。 Can-can可以很好,如果它是除了定义处理函数之外的任何东西。除了存储所有这些布尔值之外,我仍然可能最终要做的事情是......因为存在将覆盖组级权限的帐户级权限。

回答

0

这取决于准确的权限,或许像CanCan这样的东西是你在做什么?

https://github.com/ryanb/cancan

你可以描述一些,否则的权限?

+0

我看了康康,它不是基于数据库。这一切都在方法上...我最终需要使用一堆方法..所以我可以看看这个......但在我看来,它与定义一堆方法完全相同, lib文件夹。我会添加一些例子。 – NullVoxPopuli 2012-02-29 02:44:30

1

[编辑] - 澄清一下代码

我想你应该再次检查了康康舞如果有任何一种权限分组(即用户划分为经理,手下......类似的权限和只是那场保存到数据库,而不是能力的整体哈希)

继承人的能力类可能看起来像你的情况为例:

class Ability 
    include CanCan::Ability 

    def initialize(user) 

    # All registered users can edit their own objects 
    can :manage, [Object], :user_id => user.id 

    # Different roles 
    if user.moderator? 
     can :delete, [Object], :user_id => user.minion.id 
    elsif user.admin? 
     can :delete, [Object], :user_id => user.manager.id 
    end 
    end 
end 
+0

我喜欢这个,但最终,账户管理员将能够为他们的账户上的gorups定制他们的权限。 – NullVoxPopuli 2012-02-29 14:10:49

1

Here是红宝石认证GE的一个很好的列表女士。

我已经深入地使用了CanCan和acl9,并且评论了其他几个。我同意使用CanCan的建议,但我也在一个需要用户,角色和组分配的权限管理的复杂应用上使用acl9 gem取得了体面的成功。

+0

我与宝石有关的最大问题是,我需要允许我的管理员自定义权限。不错的名单。 – NullVoxPopuli 2012-02-29 14:12:55

+0

啊,我明白了。我开发了一个自定义的Rails应用程序,将自定义权限映射到管理员可以控制这些权限的操作。但是我们进行了大量调查,试图找到支持该功能并且找不到任何东西的gem。 https://github.com/berkmancenter/zone1是回购。 – 2012-02-29 14:51:12

相关问题