如何在Rails中为不同的用户建模

我有一个建立了授权和身份validation逻辑的用户模型。

现在我意识到我有三种不同类型的用户。 我想存储关于它们的不同信息。

在Rails中处理这个问题的最佳方法是什么?

基于当前阅读的思考

我看过STI但是从我读过的内容来看它是不合适的,因为我的数据库中会有很多NULL字段。

理想情况下,我不想为三种用户类型中的每一种复制身份validation/授权逻辑。

每个用户在应用程序中也将具有不同的function。

您可以尝试使用多态关联并使用所有类型的用户拥有的数据创建表users ,并将其他数据放在单独的表中。 Railscast epizode涵盖了这个主题。

有很多方法可以做到这一点。 这是一种方法:

您可以考虑用户拥有的角色 ,而不是考虑不同类型的用户。

例如,如果用户可能是屠夫,面包师或烛台制造商,则可以有四个表: usersbutchersbakerscandlestick_makers 。 后三个角色表每个都有一个user_id列; 他们“属于”用户。

如果您需要强制特定用户只有一个角色,则必须在应用程序中执行此操作(因为此数据库架构将允许单个用户具有多个角色)。

如果存在许多属于这些角色表的东西,这种方法很好。 如果没有,在users表上留下一些NULL列可能不会杀死你。