具有设计路径的用户和管理员之间的唯一ID
我已经安装了Devise并使用本教程中的选项1创建了用户和管理员https://github.com/plataformatec/devise/wiki/How-To:-Add-an-Admin-role
现在我需要一些帮助。 添加管理员时,它会创建一个不同的表,并且可能会出现管理员和普通用户具有相同ID的情况。
那么我究竟如何从用户和管理员那里获取信息呢? 比方说,我想显示所有用户? 我是否必须遍历users表然后遍历admins表?
或者如果我正在显示post。 我如何知道要查找哪个表来获取用户或管理员信息?
我知道我可以在users表中添加一个角色列,但我想避免这种情况。
我希望这有道理哈哈
我强烈建议使用单表inheritance(STI)。 您可以通过在users
表中添加一个名为type
的列和一个string
数据类型来创建STI,并创建一个admin
模型以及一个normal_user
模型,两个模型都将inheritancedevise
gem的user
模型。
class NormalUser < User end class Admin < User end
type列是保留字,它将根据您创建的用户类型保存NormalUser
或Admin
值。
要创建管理员,请使用Admin.create(...)
并创建普通用户使用NormalUser.create(...)
,其中点是Admin
和NormalUser
的属性