7
votes

Rails & Devise: champ de texte de confirmation par courrier électronique?

J'utilise des rails 3.2 et concevez. Je me demande si Devise fournit un champ "Email (Adresse)" de confirmation ", tout comme la confirmation de mot de passe pour que l'utilisateur saisisse un champ de mot de passe, puis tapez un champ de confirmation de mot de passe avant que le site Web envoie un courrier électronique de confirmation ou traite l'inscription d'inscription. . Si non, dois-je ajouter un e-mail_confirmation et valider le modèle d'utilisateur (après les rails G Devise User)?

Merci d'avance


0 commentaires

4 Réponses :


-3
votes

En supposant que vous ayez la gemme installée, lorsque vous exécutez cette fonction:

rails generate devise:install


2 commentaires

Cela ne répond pas à sa question. Il recherche un champ de confirmation par courrier électronique dans le formulaire d'inscription qui fonctionne comme le champ: Password_Confirmation.


Cette réponse est incorrecte, j'ai peur; Le module "confirmable" envoie des courriels qui nécessitent que l'utilisateur clique sur un lien pour confirmer le compte avant de pouvoir être utilisé, que le questionneur demande s'il est possible d'ajouter automatiquement un deuxième champ de messagerie qui doit correspondre au premier à la validation à la validation. .



13
votes

Je n'ai pas trouvé si Devise fait ce que vous demandez (la question se réfère à une seconde: Email_confirmation Champ similaire à: Password_confirmation, "confirmable" semble être uniquement lié à la confirmation liens ). Je devais faire cela aussi et j'ai compris comment le faire en utilisant une validation d'enregistrement active intégrée (Rails 3.2.8, Devise 2.1.2):

  1. Dans votre modèle Ajouter Confirmation: true à votre validation de votre email et : e-mail_confirmation à attr_accesible . .
  2. Dans votre vue Ajoutez un : email_confirmation champ.

    comme exemple, dans votre modèle (ne supposant pas d'autres validations ou attr_accessibles): xxx

    qui utilisera la validation de "confirmation" intégrée (confirmation »( le même que pour les mots de passe). Enfin, dans votre (s) point de vue, vous devez ajouter quelque chose comme: xxx

    Il peut y avoir une manière plus propre mais cela a fonctionné pour moi. Cependant, ma seule expérience avec le congé à ce jour a été lorsque je l'a ajouté aux modèles existants, je ne l'ai pas utilisé lorsqu'il génère les modèles pour vous (probablement c'est la même chose).


0 commentaires

2
votes

J'ai été confronté au même problème.

Voici comment j'ai résolu fort> p>

à partir du guide de rails officiel p>

Vous devez utiliser cette aide lorsque vous avez deux champs de texte qui devraient recevoir exactement le même contenu. Par exemple, vous pouvez vouloir confirmer une adresse électronique ou un mot de passe. Cette validation crée un attribut virtuel dont le nom est le nom du champ qui doit être confirmé avec "_confirmation" ajouté. P> xxx pré>

dans votre modèle de vue, vous pouvez utiliser quelque chose comme xxx pré>

Cette vérification est effectuée uniquement si e-mail_confirmation code> n'est pas nil code>. Pour exiger la confirmation, assurez-vous d'ajouter une vérification de présence pour l'attribut de confirmation (nous examinerons la présence code> plus tard dans ce guide): p> xxx pré>

Il y a aussi une option : cas_sensible code> que vous pouvez utiliser pour définir si la contrainte de confirmation sera sensible à la casse ou non. Cette option est par défaut à true. P> xxx pré>

Le message d'erreur par défaut de cette aide est " ne correspond pas à la confirmation forte>". P>

De mon expérimentation, à l'aide de Rails officielsGuide , P>

si Vous souhaitez modifier le message de confirmation pour dire, La confirmation de courrier électronique doit être correctement confirmée forte>, puis utilisez l'option Ajouter un STRAR> Message de cette manière: P>

class Person < ApplicationRecord
  validates :email, confirmation: true
  validates :email_confirmation, presence: { message: "must be given correctly" }
end


0 commentaires

0
votes

Il y a quelques différences mineures pour les nouvelles versions des rails par rapport à la réponse originale. Je suis juste pensé que j'ajouterais ceci au cas où cela aidera quelqu'un d'autre.

Ajouter un Att_Accessor Code> pour e-mail_confirmation forte> à votre modèle et validez le courrier électronique fort> Champon contre le champ e-mail_confirmation strong>. Définir case_senitive à false {cas_senitive: false} code> sur la validation, sauf si vous avez configuré le champ e-mail à la case sensible à la casse. P>

app / modèles / user.rb user.rb CODE> P>

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
  <%= render 'devise/shared/error_messages', resource: resource %>

  <div class="field">
    <%= f.label :email %>
    <%= f.email_field :email, autofocus: true, autocomplete: 'email', required: true %>
  </div>

  <div class="field">
    <%= f.label :email_confirmation %>
    <%= f.email_field :email_confirmation, required: true %>
  </div>

  <!-- other fields -->
<% end %>


0 commentaires