我正在使用Ruby on Rails 3.2.8和Sorcery authentication。
创建子用户帐户的最佳方法是什么?
理想情况下,我想通过电子邮件邀请成员并让他们点击链接并选择他们的用户名/密码。是否可以在同一个用户表中执行此操作,以便他们都可以从同一个登录页面登录?
让您了解我正在尝试做的事情是......雇主可以添加/邀请员工加入系统,系统的任何数据输入都将属于雇主。
我正在使用Ruby on Rails 3.2.8和Sorcery authentication。
创建子用户帐户的最佳方法是什么?
理想情况下,我想通过电子邮件邀请成员并让他们点击链接并选择他们的用户名/密码。是否可以在同一个用户表中执行此操作,以便他们都可以从同一个登录页面登录?
让您了解我正在尝试做的事情是......雇主可以添加/邀请员工加入系统,系统的任何数据输入都将属于雇主。
就我个人而言,我会将其作为具有同表关联列的单表继承模型来处理。
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
该老板的 ID 设置一个附加列。