我有一个带有 Clearance 和 Pundit 的 Rails 应用程序,我正在尝试创建“团队”,其中“团队负责人”可以邀请其他用户加入他们的团队。我想做一些类似于devise_invitable的事情,但要使用 Clearance。
这是我的计划:
通过注册表单注册到站点的用户会自动分配一个唯一的团队 ID,并成为“团队负责人”。他们在表单上看不到此 ID。(另一种方法是他们创建一个唯一的团队名称,在注册时保存。)最好的方法是创建一个 before_filter 用于在注册时分配团队 ID 和团队负责人?
团队 ID 或名称将是唯一的,每个用户只能属于一个团队。关联看起来像这样:
团队
has_many :users
用户
belongs_to :team
创建此“团队负责人”帐户后,此用户可以通过填写类似于 Clearance 注册表单(姓名、电子邮件等)的 User#new 表单来邀请其他用户加入团队。此表单将创建用户和将它们分配给团队负责人的团队。可以为他们分配一个随机密码以提供给Clearance,以便新用户通过验证。
团队负责人创建用户后,他们将使用随机生成的密码保存在数据库中,并向受邀用户发送类似于标准清除密码重置邮件的邮件。它只是给他们一个通知,他们已被邀请加入团队,并提供一个链接来重置他们的密码,然后登录。它基本上是带有不同副本的 Clearance 密码重置邮件。
这是一个体面的策略,还是我缺少更广泛使用的模式来解决Clearance和Pundit的这个问题?我从来没有用 Rails 做过这样的事情,所以我不知道这是否是使用Clearance的胶带方式。