2010-01-16 3 views
1

Итак, у меня есть форма подписки, в которой пользователь одновременно создает новую учетную запись и подписывается на ежемесячный план.Rails: как обрабатывать данные при возникновении ошибки при создании

Таким образом, они вводят имя пользователя, адрес электронной почты, пароль и всю обычную кредитную карту/платежную информацию.

Но проблема, с которой я столкнулась, заключается в том, что они ошибочно вводят неправильный номер кредитной карты ... что лучше всего с этим справиться?

Мне нужно сначала создать учетную запись пользователя, чтобы иметь идентификатор строки базы данных (для сторонней службы фактурирования), но поскольку у меня есть все, что было обработано одним махом в моем методе create, если пользователь исправляет их карточной информации и повторных представлений, она сообщает им, что учетная запись уже существует (поскольку учетная запись пользователя уже была создана).

Итак, вопрос в том, как бы вы справились с этим? Не могли бы вы отнести их на страницу с ошибкой, которая равна только платежных данных? Или что еще? Не уверен, что лучший способ справиться с этим ...

ответ

0

Не знаю ни одного стандарта, но я уверен, что лучший способ - удалить вновь созданную учетную запись пользователя, если проверка службы биллинга не удалась (поле created_at может помочь определить тайм-ауты).

Этот механизм реализован через database transactions, и это не требует больших усилий в Rails. Но убедитесь, что вы не используете эксклюзивную блокировку в своей базе данных.

0

на мой взгляд, вы могли бы справиться с этим двумя различными способами

1) просто сохранить данные после того, как все было успешно проверено. вы можете использовать специальную проверку для проверки кредитной карты. см snippets.dzone.com/posts/show/5266

2) используют два различных моделей (пользователей и credit_cards) и использовать find_or_create (на самом деле вы можете использовать find_or_create также с одной моделью) см http://blogs.law.harvard.edu/lianaleahy/2008/05/19/find_or_create/

Смежные вопросы