多级用户组

时间:2009-10-15 03:30:15

标签: ruby-on-rails authorization

我正在尝试确定接近多级用户组的最佳结构。到目前为止,我已经创建了一个名为“User”的对象,我认为它可能被分成不同的级别。或者我应该为每个用户组创建不同的表?

4 个答案:

答案 0 :(得分:1)

查看Single Table Inheritance.

简短版本是您向表中添加一个类型(字符串)列,并为将使用该表的所有其他模型创建子类

例如:

class SuperUser < User
  ...
end

答案 1 :(得分:1)

EmFi的答案与某种基于角色的身份验证相结合将是一个很好的解决方案。 这里讨论了一些角色方案:What are some good role authorization solutions used with Authlogic?

答案 2 :(得分:0)

我假设您正在讨论用户的不同角色。我目前正在使用角色需求。它很容易完成工作。 http://code.google.com/p/rolerequirement/

答案 3 :(得分:0)

正如EmFi建议的那样,单表继承是你最好的选择。您需要将类型字段添加到数据库中的users表,并将User模型子类化如下:

class Admin < User
  # You probably don't need any methods here.
end

但您还需要创建一个前置过滤器。与确保用户登录的类似,它只是检查用户的类。这应该放在你的ApplicationController中:

def check_admin
  current_user.is_a? Admin
end

你去了,鲍勃是你的叔叔,你有基本的授权。

要在rails中将用户提升为管理员,只需更改类型字段即可。当然,通过这种方式,用户只能拥有一个访问级别(这对许多应用程序来说都很好)。如果你想要一个更复杂的系统,acl9可以很好地完成这项工作。我个人养成了将它与authlogic一起使用以形成一个非常强大的系统的习惯。