Question

J'ai une action User.create qui enregistre provisoirement un nouvel utilisateur et envoie un e-mail avec un mot de passe généré. Quelle est la façon la plus Rails comme pour compléter cette action? Je veux tout faire exactement dès maintenant. Plus de non-sens. Cette fois, je suis sérieux.

Je pense ce sont les options ...

  1. Créer une vue appelée login_email_sent.html.haml et la rendre. (Il aurait un message comme "merci, un courriel a été envoyé avec votre login.")

  2. Créer une vue appelée create.html.haml et laissez Rails rendre que par défaut.

  3. redirigent l'utilisateur vers la même page que la forme qu'ils viennent de soumettre un message dans le flash.

Ou quelque chose d'autre ...?

Était-ce utile?

La solution

Il est plus d'une question d'expérience utilisateur.

Laissez le créer une action comme quelque chose qui crée juste et n'a pas de sortie (ou juste un en-tête simple 201 Created si créé par un appel API). Faites un redirect_to soit:

  1. Une page merci de leur dire comment attendre et ce qui se passera ensuite
  2. La page d'accueil avec un message flash très visible de leur faire savoir ce qui vient de se passer.

Dans 99,9% des cas, vous ne devriez pas avoir besoin d'un modèle pour créer.

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

Par exemple.

Autres conseils

Sans aucun doute l'option 3, la redirection vers l'action show. Lorsque vous faites cela, l'utilisateur sera redirigé lorsque l'action est terminée, et ne peut donc pas accidentellement rediffuser en remontant dans l'histoire. En outre, cela garantit que les pages peuvent être rendus bookmarked / sauvés.

les rediriger vers la page de connexion, avec un message flash en leur disant de vérifier leur e-mail pour obtenir des instructions supplémentaires sur la validation et la connexion à leur compte. Beaucoup de gens suggèrent l'enregistrement de l'utilisateur automatiquement sur la validation de l'utilisateur, mais à mon avis, cela est un problème de sécurité pour les sites sensibles.

Cela dépend s'il y a quelque chose qu'ils peuvent faire utilement sur votre site sans vous inscrire. S'il y a les rediriger ensuite vers la page d'accueil et utilisez le flash pour afficher un message expliquant qu'un courriel a été envoyé et les invitant à regarder autour dans l'intervalle.

Si

est rien qu'ils peuvent faire, alors vous pouvez les rediriger vers une page d'accueil avec des informations / faqs pour les aider à prendre un bon départ et les faire se sentir comme ils ont signé quelque chose d'utile.

Aussi au lieu de les envoyer un mot de passe dans l'e-mail, pensez à les envoyer un lien vers le compte utilisateur créé la page où ils peuvent mettre en place leur mot de passe et d'autres détails. Le lien contiendrait un code d'accès de porte arrière associé au nouveau compte utilisateur. Lorsque cette page est soumis et validé le code de la porte arrière peut être supprimé.

La même approche peut être utilisée pour les mots de passe oubliés, dès que l'utilisateur définit un nouveau mot de passe ou s'ils se souviennent et vous connecter normalement le code de la porte arrière est supprimée.

Le seul problème avec cette approche est qu'ils peuvent se retrouver avec deux fenêtres de navigateur ou les onglets ouverts sur votre site. Mais il ne vous donne une chance de demander toute autre information que vous pourriez avoir besoin - adresse, date de naissance ou autre -. Sans effrayer les gens loin en mettant trop de questions sur votre signe initial formulaire up

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top