1

我正在 Rails 中实现一个求职应用程序,用户可以在其中注册三个不同的配置文件/角色。

  1. 雇主
  2. 工人
  3. 企业家(有自己的公司)

用户可以选择多个配置文件/角色。

(我正在使用设计)

我的疑问是在上述情况下是否可以实现单表继承。?喜欢

  CLass Employer < user
  CLass worker < user

或者实现上述功能的数据库结构的最佳解决方案应该是什么?

4

2 回答 2

0

是的,这当然是可能的,当模型共享相同的属性并且您希望能够一起查询它们时,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
于 2012-08-24T16:18:26.100 回答
0

您可能想观看此railscast —— 这是我最近实施的。它使用数据库中的位掩码列。我还将它与cancan配对以处理我的权限。

于 2012-08-24T20:57:42.113 回答