我个人会将其作为具有同表关联列的单表继承模型来处理。
在您的用户表上放置一个名为boss_id 的字段。您将拥有主要的User 模型,它具有巫术身份验证内容和任何通用逻辑。在它下面是Employer 和Employee。他们有一个名为 boss 的方法:对于雇主,这将返回 self 或 nil(无论您认为哪个最有意义),而对于雇员,这是一个实际的关联方法,如下所示:
class Employee < User
belongs_to :boss, class_name: 'User'
end
当雇主发出邀请时,将受邀者引导至特定于雇主的邀请 URL,例如:
http://yoursite.com/employer/3/invitation
当用户创建他们的帐户时,您将他们与他们拥有的雇主相关联。
当雇主查看他们的数据时,请确保您也提取其子雇员的数据,使用 users 表作为连接表:
class Employer < User
has_many :employees, class_name: 'User', foreign_key: 'boss_id'
has_many :contacts # Or whatever your application-specific stuff is
# that you want employers to see through their employees
has_many :employee_contacts, through: :employees, source: :contacts
end
如果您需要在数据库中将所有权分配给雇主,我会使用观察者来观察所拥有模型的保存,如果它们是由具有boss 的人保存的,则为该老板设置一个额外的列'标识。