J'ai intégré devise avec facebook. Maintenant, lorsque je crée un compte d'utilisateur après que l'utilisateur s'est connecté avec son compte Facebook,
user = User.create(:email => data["email"],
:password => Devise.friendly_token[0,20])
user.confirmed_at = DateTime.now
user.save!
même si le compte a été confirmé, un e-mail de confirmation est toujours renvoyé. Avez-vous une idée de comment désactiver le déclenchement du courrier électronique?
Le rappel de confirmation se produit après la création, il se produit donc sur la ligne 1 de votre exemple, avant de définir confirmed_at
manuellement.
Selon les commentaires, la chose la plus correcte à faire serait d'utiliser la méthode prévue à cet effet, #skip_confirmation!
. Réglage confirmed_at
fonctionnera manuellement, mais il contourne l'API fournie, ce qui devrait être évité dans la mesure du possible.
Donc, quelque chose comme:
user = User.new(user_attrs)
user.skip_confirmation!
user.save!
Réponse originale:
Si vous passez le confirmed_at
avec vos arguments create
, le message ne doit pas être envoyé, car le test pour savoir si un compte est déjà "confirmé" consiste à vérifier si cette date est définie ou non.
User.create(
:email => data['email'],
:password => Devise.friendly_token[0,20],
:confirmed_at => DateTime.now
)
Cela, ou utilisez simplement new
au lieu de create
pour créer votre enregistrement utilisateur.
Si vous souhaitez simplement empêcher l'envoi de l'e-mail, vous pouvez utiliser #skip_confirmation_notification
, ainsi:
user = User.new(your, args)
user.skip_confirmation_notification!
user.save!
Voir documentation
Ignore l'envoi de l'e-mail de notification de confirmation/reconfirmation after_create/after_update. Contrairement à #skip_confirmation !, l'enregistrement nécessite toujours une confirmation.