具有设计路径的用户和管理员之间的唯一ID

时间:2012-02-26 04:11:32

标签: ruby-on-rails devise

我已经安装了Devise并使用本教程中的选项1创建了用户和管理员https://github.com/plataformatec/devise/wiki/How-To:-Add-an-Admin-role

现在我需要一些帮助。添加管理员时,它会创建一个不同的表,并且可能会出现管理员和普通用户具有相同ID的情况。

那么我究竟如何从用户和管理员那里获取信息呢?比方说,我想显示所有用户?我是否必须遍历users表,然后遍历admins表?

或者如果我正在显示帖子。我如何知道要查找哪个表来获取用户或管理员信息?

我知道我可以在users表中添加一个角色列,但我想避免这种情况。

我希望这有道理哈哈

1 个答案:

答案 0 :(得分:13)

我强烈建议使用单表继承(STI)。您可以通过在type表中添加名为stringusers数据类型的列来创建STI,并创建admin模型以及normal_user模型两个模型都将继承user gem的devise模型。

class NormalUser < User
end

class Admin < User
end

type列是一个保留字,根据您创建的用户类型,它将保存值NormalUserAdmin

要创建管理员使用Admin.create(...)并创建普通用户,请使用NormalUser.create(...),其中点是AdminNormalUser

的属性