0

我试图让 Devise 创建一个单一的用户模型,并让不同的角色成为一个单独的模型。我的用户模型(来自 rails g devise User)有一个电子邮件、名字、姓氏和角色字段。

角色是管理员、观众、竞争者。因此,我创建了 admin、spectator 和竞争者模型,它们都继承自 User 模型。

我遵循了设计和多个“用户”模型的最佳答案,我可以创建一个用户。但是,我的竞争对手模型迁移还具有其他模型不需要的其他信息,例如比赛名称和位置。当我执行 Competitor.create() 并输入创建设计用户所需的信息时,即使我对竞赛名称和位置的竞争对手模型有空约束,用户也会存储在数据库中。

当我做 Spectator.all 时,最近创建的竞争对手数据会显示出来,我认为它不应该......

我的问题是我应该如何设置它,以便除非提供他的比赛名称和位置,否则不会创建竞争对手用户。

另一个问题是为什么我做 Spectator.all 时会显示竞争对手的信息?

4

2 回答 2

1

如果您想要一个授权系统,请选择Ryan Bates 创建的CanCan 。使用 CanCan,您可以拥有许多角色。我正在使用它,没有任何问题。请参阅基于角色的授权单独的角色模型。并查看有关 CanCan 的截屏视频

于 2013-09-12T20:46:28.143 回答
1

有一种更好的方法可以为多个用户使用设计。

使用Rolify 宝石

它使开发更容易、更快、更安全。您可以在“单用户模型和每个角色都有一个单独的模型”问题中根据您的要求进行配置

Rolify Gem 开发人员使用 Rolify gem + Devise 的教程

于 2013-09-12T18:19:56.570 回答