Я пытаюсь реализовать многоэтапный процесс регистрации. В этой конкретной реализации используется OmniAuth, но для целей данного обсуждения это вполне может быть любой поставщик OAuth.
Вот шаги регистрации, которые мы могли бы реализовать:
Шаг 1. Пользователь нажимает Соединяется с _______ __.
Шаг 2. Авторизуйтесь через _________ и перенаправьте на обратный вызов . Получите соответствующие данные от поставщика и сохраните их в своей модели User
.
Шаг 3. Выберите имя пользователя, укажите адрес электронной почты и любые другие данные, необходимые для регистрации вашего приложения. Также сохраните это в своей модели User
.
Проблема для меня заключается в переходе от шага 2 к шагу 3. Я мог бы установить проверку данных на основе состояния, используя что-то вроде state_machine, например.
Однако мне пришлось бы удалить ненулевые ограничения на уровне столбцов для некоторых важных фрагментов данных, таких как username
в моем случае (который используется для пользовательских маршрутов) или email
. Мне не очень удобно удалять еще один уровень целостности данных.
Я уверен, что эта проблема уже решалась тысячу раз. Как вы справились с этим и как бы вы порекомендовали мне справиться с этим?