Rails de Concevoir: after_confirmation
Est-il un moyen de créer un after_confirmation :do_something
?
Le but est d'envoyer un e-mail après confirmation de l'utilisateur à l'aide de Concevoir :confirmable
.
Vous devez vous connecter pour publier un commentaire.
Pour les nouvelles versions de concevoir 3.x :
Voir une réponse différente http://stackoverflow.com/a/20630036/2832282
Pour les anciennes versions de concevoir 2.x :
(Réponse originale à cette question)
mais vous devriez être capable de mettre un before_save rappel sur l'utilisateur (le crédit supplémentaire pour l'utilisation d'un observateur) et de vérifier si confirmed_at a juste mis en concevoir. Vous pouvez faire quelque chose comme:
http://api.rubyonrails.org/classes/ActiveModel/Dirty.html pour plus de détails sur la vérification de la modification sur le champ.
after_save :send_welcome_email, :if => proc { |l| l.confirmed_at_changed? && l.confirmed_at_was.nil? }
after_confirmation
qui peut être remplacé sur votre modèleJe suis l'aide de Concevoir 3.1.2, il dispose d'un espace réservé méthode
after_confirmation
qui est appelé après la confirmation de se terminer avec succès. Nous avons juste besoin de remplacer cette méthode dansUser
modèle.Voir: Concevoir 3.5.9 Code Source: https://github.com/plataformatec/devise/blob/d293e00ef5f431129108c1cbebe942b32e6ba616/lib/devise/models/confirmable.rb
undefined method
after_confirmation "pour l'Utilisateur" ... cela pourrait-il être un dispositif problème de configuration?confirmed_at_changed?
ouconfirmed_at_was
. À l'aide d'un traditionnelbefore_save
est la meilleure solution pour que, comme il est suggéré dans la réponse choisie commentaire here.previous_changes
tel que décrit ici.Vous pouvez remplacer le
confirm!
méthode:Discussion sur le sujet est à https://github.com/plataformatec/devise/issues/812. Ils disent qu'il n'y a pas de rappels comme
after_confirmation :do_something
parce que cette approche exige beaucoup de différents rappels.Rails 4:
combinant plusieurs réponses ci-dessus
selon le Concevoir 3.5.9 code source, vous pouvez simplement définir une méthode sur le dispositif de la Ressource de modèle, par exemple:
Voir: Concevoir 3.5.9 Code Source: https://github.com/plataformatec/devise/blob/d293e00ef5f431129108c1cbebe942b32e6ba616/lib/devise/models/confirmable.rb
Je ne vois pas ça rappel trop, peut-être que vous pouvez essayer de remplacer la méthode de confirmation et appelez votre rappel il.
Vous pouvez remplacer le
confirm!
méthode sur votre modèleIl y a une discussion sur le sujet est https://github.com/plataformatec/devise/issues/812. J'ai essayé de cette façon, et il a très bien fonctionné.
Nous sommes en combinant les réponses de @Bernát et @RyanJM:
Cela semble un peu plus les performances de conscience et plus sûre que les deux réponses séparément.