我试图让Devise创建一个用户模型,并将不同的角色作为一个单独的模型。我的用户模型(来自rails g devise User)有一个电子邮件,名字,姓氏和角色字段。
角色是管理员,观众,竞争对手。因此,我创建了所有继承自User模型的管理员,旁观者和竞争者模型。
我跟随devise and multiple "user" models的最高回答,我可以创建一个用户。但是,我的竞争对手模型迁移还包含其他模型不需要的其他信息,例如比赛名称和位置。当我执行Competitor.create()并输入创建设备用户所需的信息时,即使我对比赛名称和位置的竞争者模型有空约束,用户也会存储在数据库中。
当我做Spectator.all时,最近创建的竞争对手数据显示我认为不应该......
我的问题是我应该如何设置它,以便除非提供比赛名称和位置,否则不会创建竞争对手用户。
另一个问题是为什么当我做Spectator.all时,竞争对手的信息会显示出来?
答案 0 :(得分:1)
有一种更好的方法可以为多个用户使用设计。
它使开发更容易更快,更安全。您可以在问题“单一用户模型,每个角色都有一个单独的模型”中按照您的要求进行配置
Tutorial for using Rolify gem + Devise by Rolify Gem developers
答案 1 :(得分:1)
如果您需要授权系统,请转到Ryan Bates创建的CanCan。使用CanCan,您可以拥有许多角色。我正在使用它与设计没有问题。请参阅Role Based Authorization和Separate Role Model。并查看ScreenCast关于CanCan
的信息