RubyOnRails - 如何模拟用户作为候选人或公司

时间:2014-08-22 20:02:39

标签: ruby-on-rails ruby model

我试着把标题尽我所能。

反正

在网站上,我试图让用户可以注册并选择成为公司还是候选人。但这不是角色问题。因为公司与候选人有一些共享属性但不是全部。候选人和公司都有自己的属性。

我不确定我应该如何建模我的课程。

我的意思是belongs_to并且has_one听起来不对我。

我真的在一个残局。我尝试了gem active_record-acts_as,但我不知道如何处理控制器方法并用它注册表单。

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

这看起来像是使用单表继承(STI)的完美案例。它基本上允许您在模型中使用对象继承(更多关于STI herehere)。

您希望创建包含Candidate和Company之间共享的所有属性的类User,然后创建从User派生的Company和Candidate类,并仅添加特定于这些类的属性。

答案 1 :(得分:0)

用户-> CompanyUser <-公司

用户-候选人

class User < ApplicationRecord
  has_many :company_users
  has_one :candidate
end

Company.rb

class Company < ApplicationRecord
  has_many :company_users
end

CompanyUser.rb

class CompanyUser < ApplicationRecord
  belongs_to :user
  belongs_to :company
end

阅读您的文字时,我假设这是某种形式的求职或非常相似的内容,因此,我认为应聘者是适用于公司的某种形式的简历。因此,如果用户确实是求职者,那么我会将这些额外的信息放在可以创建的候选人中。否则,您将以company_user的形式创建公司与用户之间的关系。如果有人被雇用或正在招聘,您也可以这样做。