2009-02-10 4 views
1

У меня есть действие User.create, которое предварительно регистрирует нового пользователя и отправляет электронное письмо с сгенерированным паролем. Каков самый Rails-способ завершить это действие? Я хочу сделать все прямо сейчас. Больше бессмыслицы. На этот раз я серьезно.Каков правильный способ выполнения действия Rails?

Я думаю, эти варианты ...

  1. Создать представление под названием login_email_sent.html.haml и сделать его. (У него было бы сообщение типа «спасибо, было отправлено электронное письмо с вашим логином».)

  2. Создайте представление под названием create.html.haml и дайте Rails сделать это по умолчанию.

  3. Перенаправить пользователя на ту же страницу, что и форма, которую они только что отправили с сообщением во флеше.

Или что-то еще ...?

ответ

6

Это вопрос пользователя.

Оставьте действие create как нечто, что только создает и не имеет выхода (или просто простой заголовок 201 Created, если он создан вызовом API). Сделайте redirect_to либо:

  1. благодарит страницу, говоря им, как ждать и что будет дальше
  2. Домашняя страница с очень видимой вспышки сообщение давая им знать, что только что произошло.

В 99,9% случаев вам не нужен шаблон для создания.

def create 
    User.create(...) 
    respond_to do |format| 
    format.html { redirect_to signup_complete_url } 
    format.xml { render :head => :created } 
    end 
end 

например.

4

Определенно вариант 3, перенаправление на действие шоу. Когда вы это сделаете, пользователь будет перенаправлен, когда действие завершится, и, таким образом, оно не может быть случайно отправлено обратно в историю. Кроме того, это гарантирует, что отображаемые страницы могут быть добавлены в закладки или сохранены.

+0

Я с вами в части перенаправления, но я не знаю о действии шоу. Это не совсем ситуация с шоу. Я не показываю экземпляр пользователя (обычная цель действия шоу), просто страница с благодарностью. Я думаю, может быть, перенаправлен на специальные действия и просмотр login_email_sent. Не уверен. – Ethan

+0

Показ шоу - это практика RESTful. После публикации для создания нового ресурса необходимо вернуть его. –

1

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

1

Это зависит от того, есть ли что-нибудь, что они могут с пользой сделать на вашем сайте без регистрации. Если затем переадресовать их на домашнюю страницу и использовать флешку, чтобы отобразить сообщение, объясняющее, что отправлено электронное письмо, и приглашая их посмотреть вокруг.

Если они ничего не могут сделать, вы можете перенаправить их на приветственную страницу с информацией/faqs, чтобы помочь им начать работу и заставить их почувствовать, что они подписались на что-то стоящее.

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

Такой же подход может использоваться для забытых паролей, как только пользователь устанавливает новый пароль, или если он их запоминает и обычно регистрируется, код задней двери удаляется.

Единственная проблема с этим подходом заключается в том, что на вашем сайте могут открываться два окна браузера или вкладки. Но это дает вам возможность запросить любую другую информацию, которая вам может потребоваться, - адрес, DOB или что-то еще - не пугая людей, задав слишком много вопросов в вашей начальной форме регистрации.

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