58 votes

Variable ou méthode locale non définie `unconfirmed_email` lors de l'inscription d'utilisateurs?

Je viens d'installer Devise dans mon application, configuré les vues et tout. Cependant, lorsque je clique sur le bouton d'inscription, j'obtiens cette erreur:

NameError dans Devise::RegistrationsController#create
variable locale non définie ou méthode `unconfirmed_email' pour #

Pourquoi cela? De plus, j'utilise tlsmail pour envoyer des e-mails via mon compte professionnel Gmail. Cela pourrait également poser problème.

129voto

varatis Points 5386

Unconfirmed_email est requis pour reconfirmable. Pour une raison quelconque, cela a été activé par défaut dans config/intializers/devise.rb:

config.reconfirmable = true

Il vous suffit de le définir sur false.

30voto

Fivell Points 5521

Vous manquez de la colonne unconfirmed_email dans la db.

Ajoutez t.reconfirmable dans les migrations et exécutez rake db:migrate

ou si vous utilisez devise >= 2.0

t.string   :unconfirmed_email

0voto

brytebee Points 23

config.reconfirmable = true est en place pour garantir que lorsqu'un utilisateur souhaite changer son e-mail, il confirme également cet e-mail, tout comme l'e-mail initial avec lequel il s'est inscrit. Ne modifiez cela que si vous ne souhaitez pas cette fonctionnalité : config.reconfirmable = false.

À mon avis, construire un système sécurisé nécessite que cette fonctionnalité soit en place.

Vous pourriez donc créer une migration pour ajouter reconfirmable à votre schéma comme suggéré par @fivell

rails g migration AddReconfirmableToUsers reconfirmable:string
rake db:migrate

Vous pourriez également simplement arrêter votre serveur, supprimer la base de données, décommenter t.string :reconfirmable dans votre devise.rb et recréer votre base de données, sauf si vous ne pouvez pas vous le permettre !!.

Ligne dans devise.rb

ctrl + c # tuer le serveur
rake db:drop
# décommentez la ligne 28 (au moment de cette publication) dans devise.rb comme dans l'image jointe
rake db:create db:migrate

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X