如何实现多个角色的关联?

时间:2012-08-24 16:03:50

标签: ruby-on-rails ruby associations single-table-inheritance

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

  1. 雇主
  2. 工人
  3. Enterpreneur(有自己的公司)
  4. 用户可以选择多个个人资料/角色。

    (我正在使用Devise)

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

      CLass Employer < user
      CLass worker < user
    

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

2 个答案:

答案 0 :(得分:0)

是的,当然有可能,当模型共享相同的属性并且您希望能够一起查询它们时,STI被广泛使用(由于您加载了一个db表,因此有助于提高速度和简单性)。您也可以在类之间共享代码,您只需要在父类中放置一次方法并让所有子级都继承。

旁注,请确保遵循ruby命名惯例,将类大写

  Class Worker < User

编辑(建议的方法)

我不会从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

答案 1 :(得分:0)

您可能希望观看此railscast - 这就是我刚刚实施的内容。它在数据库中使用位掩码列。我还将其与cancan配对以处理我的权限。