【问题标题】:Ruby on Rails 3.2 Sorcery authentication with sub usersRuby on Rails 3.2 Sorcery 身份验证与子用户
【发布时间】:2014-01-05 07:25:19
【问题描述】:

我正在使用 Ruby on Rails 3.2.8Sorcery 身份验证

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

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

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

【问题讨论】:

    标签: ruby-on-rails authentication sorcery


    【解决方案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 的人保存的,则为该老板设置一个额外的列'标识。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-09
      • 2013-10-10
      • 2011-02-02
      • 1970-01-01
      • 2016-04-12
      • 2018-04-27
      • 1970-01-01
      相关资源
      最近更新 更多