问题
我有一个带有授权和身份验证逻辑的用户模型。
现在我意识到我有三种不同类型的用户。我想存储关于他们每个人的不同信息。
在 Rails 中处理这个问题的最佳方法是什么?
基于当前阅读的想法
我看过 STI,但从我读过的内容来看,这是不合适的,因为我的数据库中最终会出现很多 NULL 字段。
理想情况下,我不想为三种用户类型中的每一种重复身份验证/授权逻辑。
每个用户在应用程序中也将具有不同的功能。
我有一个带有授权和身份验证逻辑的用户模型。
现在我意识到我有三种不同类型的用户。我想存储关于他们每个人的不同信息。
在 Rails 中处理这个问题的最佳方法是什么?
我看过 STI,但从我读过的内容来看,这是不合适的,因为我的数据库中最终会出现很多 NULL 字段。
理想情况下,我不想为三种用户类型中的每一种重复身份验证/授权逻辑。
每个用户在应用程序中也将具有不同的功能。
您可以尝试使用多态关联并使用所有类型的用户拥有的数据创建表users
,并将其他数据放在单独的表中。涵盖此主题的Railscast Epizode 。
有很多方法可以做到这一点。这是一种方法:
您可以考虑用户拥有的角色,而不是考虑不同类型的用户。
例如,如果用户可能是屠夫、面包师或烛台制造商,您可以有四个表:users
、butchers
、bakers
、candlestick_makers
。后三个角色表各有一user_id
列;他们“属于”用户。
如果您需要强制特定用户只有一个角色,则必须在应用程序中执行此操作(因为此数据库模式将允许单个用户具有多个角色)。
如果这些角色表中有很多内容,则此方法很好。如果没有,在表上留下一些 NULL 列users
可能不会杀死你。