Rails Devise: after_confirmation

后端 未结 8 1557
被撕碎了的回忆
被撕碎了的回忆 2020-12-05 13:31

Is there a way to create a after_confirmation :do_something ?

The goal is to send an e-mail after the user confirms using Devise :confirmable

相关标签:
8条回答
  • 2020-12-05 13:52

    I'm using Devise 3.1.2, it has a placeholder method after_confirmation which is called after the confirmation finished successfully. We just need to override this method in User model.

    class User < ActiveRecord::Base
      devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable, :confirmable
    
      # Override Devise::Confirmable#after_confirmation
      def after_confirmation
        # Do something...
      end
    end
    

    See: Devise 3.5.9 Source Code: https://github.com/plataformatec/devise/blob/d293e00ef5f431129108c1cbebe942b32e6ba616/lib/devise/models/confirmable.rb

    0 讨论(0)
  • 2020-12-05 13:53

    For new versions of devise 3.x :

    See a different answer http://stackoverflow.com/a/20630036/2832282

    For old versions of devise 2.x :

    (Original answer)

    but you should be able to put a before_save callback on the user (extra credit for using an observer) and check if confirmed_at was just set by devise. You can do something like:

      send_the_email if self.confirmed_at_changed?
    

    http://api.rubyonrails.org/classes/ActiveModel/Dirty.html for more details on checking the change on the field.

    0 讨论(0)
提交回复
热议问题