3

我正在使用Ruby on Rails 3.2.8Sorcery authentication

创建子用户帐户的最佳方法是什么?

理想情况下,我想通过电子邮件邀请成员并让他们点击链接并选择他们的用户名/密码。是否可以在同一个用户表中执行此操作,以便他们都可以从同一个登录页面登录?

让您了解我正在尝试做的事情是......雇主可以添加/邀请员工加入系统,系统的任何数据输入都将属于雇主。

4

1 回答 1

1

就我个人而言,我会将其作为具有同表关联列的单表继承模型来处理。

boss_id在您的用户表上放置一个名为的字段。您将拥有主User模型,其中包含巫术身份验证内容和任何通用逻辑。在它下面你有EmployerEmployee。他们有一个方法叫做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该老板的 ID 设置一个附加列。

于 2012-12-28T07:20:33.270 回答