如何在Rails中处理多个用户类型?

Sam*_*ang 5 authentication modeling ruby-on-rails

我找到了一种在系统中对User不同类型进行建模的好方法.对于注册,他/她可以选择成为学生,导师或两者.作为学生或导师有不同的属性.学生和导师也将有不同的个人资料模板布局.

您如何为这类问题设计控制器和模型?

Sim*_*ker 3

  1. 我会创建一个User可以容纳一个Mentor班级和/或一个Student班级的班级。这样,不同的属性就会彼此分离,而相同的属性仍然保留在User类中。
    在控制器中,您可以渲染模板(或部分模板),具体取决于用户持有的实例。一份供学生使用,一份供导师使用,一份供两者使用。

  2. 您还可以使用继承(User作为父级MentorStudentBoth作为子级)。您要在这里查看的关键词是Single Table Inheritance

恕我直言,问题在于这两个选项。这就是为什么我更喜欢第一个解决方案。

  • “两者”子类的想法对我来说感觉非常尴尬,除非某人同时以某种方式创造了新的属性。绝对更喜欢您的第一个解决方案。 (3认同)