我正在尝试确定最好的结构来接近多层次的用户组。到目前为止,我已经创建了一个名为"User“的对象,我认为它可能会被分成不同的级别。或者我应该简单地为每个用户组创建不同的表?
发布于 2009-10-15 06:51:32
了解一下Single Table Inheritance.。
简而言之,您可以向表中添加一个类型(字符串)列,并从User中将使用该表的所有其他模型子类化
例如:
class SuperUser < User
...
end
发布于 2010-01-13 10:11:23
我假设你说的是用户的不同角色。我目前使用的是RoleRequirement。它可以相当容易地完成工作。http://code.google.com/p/rolerequirement/
发布于 2010-01-14 18:13:02
正如EmFi所建议的,单表继承是您最好的选择。您需要将类型字段添加到数据库的users表中,并按如下所示创建用户模型的子类:
class Admin < User
# You probably don't need any methods here.
end
但是,您还需要创建一个before过滤器。与确保用户登录的方法非常相似,它只是检查用户的类。这应该放在你的ApplicationController中:
def check_admin
current_user.is_a? Admin
end
给你,鲍勃是你的叔叔,你有基本的授权。
要在rails中将用户提升为Admin,只需更改type字段。当然,通过这种方式,用户只能拥有一个访问级别(这对于很多应用程序来说都很好)。如果你想要一个更复杂的系统,acl9已经做好了充分的准备。我个人习惯于将它与authlogic一起使用,以形成一个相当强大的系统。
https://stackoverflow.com/questions/1570149
复制相似问题