我试着把标题尽我所能。
反正
在网站上,我试图让用户可以注册并选择成为公司还是候选人。但这不是角色问题。因为公司与候选人有一些共享属性但不是全部。候选人和公司都有自己的属性。
我不确定我应该如何建模我的课程。
我的意思是belongs_to并且has_one听起来不对我。
我真的在一个残局。我尝试了gem active_record-acts_as,但我不知道如何处理控制器方法并用它注册表单。
有人可以帮助我吗?
答案 0 :(得分:1)
这看起来像是使用单表继承(STI)的完美案例。它基本上允许您在模型中使用对象继承(更多关于STI here或here)。
您希望创建包含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的形式创建公司与用户之间的关系。如果有人被雇用或正在招聘,您也可以这样做。