我正在尝试确定接近多级用户组的最佳结构。到目前为止,我已经创建了一个名为“User”的对象,我认为它可能被分成不同的级别。或者我应该为每个用户组创建不同的表?
答案 0 :(得分:1)
简短版本是您向表中添加一个类型(字符串)列,并为将使用该表的所有其他模型创建子类
例如:
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一起使用以形成一个非常强大的系统的习惯。