使用设计邀请。如何仅在用户设置密码后创建用户

Using devise invitable. How to create the user only after the user has set his password

def create
    if User.invite!(user_params)
        flash[:success] = t('flashes.users.create_success')
    else
        flash[:error] = t('flashes.users.create_error')
    end
    redirect_to company_path(id: company.slug)
end

User.invite! 将创建用户,然后发送邀请以设置密码。我只希望它发送设置密码的邀请,然后仅在用户设置密码后才保留该用户。

我不会乱搞那样的设计邀请实现。

或许可以使用枚举向用户添加一个状态列,这样您就可以隔离尚未接受邀请的用户,并且正如其中一位评论者所说,稍后删除过时的用户。

enum status: {invited: 0, accepted: 1}

然后您可以执行以下操作:

User.invite!(status: "invited")

当用户通过挂钩 gem 提供的回调(参见 https://github.com/scambra/devise_invitable)接受时,您必须设置 "accepted" 状态。