我正在尝试实施多步注册流程。这个特定的实现涉及OmniAuth,但出于本讨论的目的,它可能是任何OAuth提供者。
以下是我们可能实施的注册步骤:
第1步。用户点击使用 _ __ _ __ _ <连接/ EM> __
第2步。通过 _ __ _ __ _ __ 进行授权,重定向到回调。从提供商处提取相关数据并保存到您的User
模型。
第3步。选择用户名,填写电子邮件地址以及注册应用所需的任何其他所需数据。同时将其保存到User
型号。
问题在于从第2步到第3步的过渡。我可以根据状态设置数据验证,使用类似{{3}的内容例如。
但是,我必须在列级别删除某些基本数据的非空约束,例如username
(在我的情况下用于用户路由),或email
。我不太愿意去除另一层数据完整性。
我确信此问题已经解决了一千次。你是如何处理它的,你会如何推荐我处理它?</ p>
答案 0 :(得分:0)
您是否可以将提供商的数据作为表单中的隐藏字段添加到第3步以选择用户名,电子邮件地址等?这样,在您拥有所有可用数据之前,您无法创建User
实例。