我正在 Rails 中实现一个求职应用程序,用户可以在其中注册三个不同的配置文件/角色。
- 雇主
- 工人
- 企业家(有自己的公司)
用户可以选择多个配置文件/角色。
(我正在使用设计)
我的疑问是在上述情况下是否可以实现单表继承。?喜欢
CLass Employer < user
CLass worker < user
或者实现上述功能的数据库结构的最佳解决方案应该是什么?
我正在 Rails 中实现一个求职应用程序,用户可以在其中注册三个不同的配置文件/角色。
用户可以选择多个配置文件/角色。
(我正在使用设计)
我的疑问是在上述情况下是否可以实现单表继承。?喜欢
CLass Employer < user
CLass worker < user
或者实现上述功能的数据库结构的最佳解决方案应该是什么?
是的,这当然是可能的,当模型共享相同的属性并且您希望能够一起查询它们时,STI 被广泛使用(由于您正在加载一个数据库表,这将有助于提高速度和简单性)。您也可以在类之间共享代码,您只需在父类中放置一次方法并让所有子类继承。
旁注,确保您遵循 ruby 命名惯例,将类大写
Class Worker < User
编辑(建议的方法)
我不会让这些角色从用户继承,您仍然可以使用 STI 但创建另一个模型
Class User < ActiveRecord::Base
has_many :profiles
Class Profile < ActiveRecord::Base
belongs_to :user
Class Employer < Profile
Class Worker < Profile
Class Entrepreneur < Profile