Ruby on rails RubyonRails中的用户层次结构设计
我有一个需要身份验证的应用程序,并且有一个用户模型。根据以下规则,有4个级别的授权:Ruby on rails RubyonRails中的用户层次结构设计,ruby-on-rails,authentication,authorization,hierarchy,Ruby On Rails,Authentication,Authorization,Hierarchy,我有一个需要身份验证的应用程序,并且有一个用户模型。根据以下规则,有4个级别的授权: 级别1用户可以创建/编辑/删除所有级别2、3和4用户 级别2用户可以创建级别3和级别4用户,并仅编辑他们拥有的用户 级别3和级别4无权创建/编辑/删除用户 更新:3级和4级用户可以有多个2级父用户 除此之外,我希望所有用户都能够通过单个界面登录 有没有处理这种层次结构的模式?使用授权插件(如)将允许我定义不同级别的授权,但不能定义不同用户之间的关系 基本上,我希望设计能使我编写如下控制器代码: @level_t
@level_two_users = current_user.find_all_my_level_two_users
谢谢您可以向您的用户模型中添加属性
级别
,以及查询允许用户的方法
要获得X级的所有用户,只需使用类似“代码>用户”的查询。按级别(2)查找所有用户。
类用户
可访问属性:级别
允许def编辑用户?(用户)
case self[:级别]
当1
用户级别>1
当2
user.level>2&&user.created_by?(self)
结束
假的
结束
def允许_创建_用户_级别?(级别)
self[:level]您可以向您的用户模型添加属性level
,以及查询允许用户的方法
要获得X级的所有用户,只需使用类似“代码>用户”的查询。按级别(2)查找所有用户。
类用户
可访问属性:级别
允许def编辑用户?(用户)
case self[:级别]
当1
用户级别>1
当2
user.level>2&&user.created_by?(self)
结束
假的
结束
def允许_创建_用户_级别?(级别)
self[:level]感谢您的回复arnep,我正在尝试使用您的解决方案,并且遇到了另一个障碍,您可以检查我上面的更新吗?@pingu您可以使用:与创建者
有许多关系(一个用户有许多其他用户作为创建者)。然后你可以使用created by?
方法来查询此关系。感谢回复arnep,我正在尝试使用你的解决方案,并遇到了另一个障碍,你可以检查我上面的更新吗?@pingu你可以使用:与创建者有多个关系(一个用户有许多其他用户作为创建者)。然后,您可以使用由?
创建的方法来查询此关系。
class User
attr_accessible :level
def allowed_to_edit_user?(user)
case self[:level]
when 1
user.level > 1
when 2
user.level > 2 && user.created_by?(self)
end
false
end
def allowed_to_create_user_with_level?(level)
self[:level] <= 2 && self[:level] < level
end
end