Deviseをセットアップするときに、どのモデルが動作しているかをユーザーに伝えます。多くの/ほとんどのメソッドは、そのクラスに適用されます。だからこそ、あなたは物事を無効にしたいでしょう。
私が正しく読んでいれば、あなたがしたいことをほぼ正確に記述するlib/devise/models/authenticatable.rb
のDeviseコードからのコメントです。
# This is an internal method called every time Devise needs
# to send a notification/mail. This can be overriden if you
# need to customize the e-mail delivery logic. For instance,
# if you are using a queue to deliver e-mails (delayed job,
# sidekiq, resque, etc), you must add the delivery to the queue
# just after the transaction was committed. To achieve this,
# you can override send_devise_notification to store the
# deliveries until the after_commit callback is triggered:
#
# class User
# devise :database_authenticatable, :confirmable
#
# after_commit :send_pending_notifications
#
# protected
#
# def send_devise_notification(notification)
# pending_notifications << notification
# end
#
# def send_pending_notifications
# pending_notifications.each do |n|
# devise_mailer.send(n, self).deliver
# end
# end
#
# def pending_notifications
# @pending_notifications ||= []
# end
# end
#
def send_devise_notification(notification)
devise_mailer.send(notification, self).deliver
end
私のuser.rbファイルに「send_devise_notification」を追加していただきありがとうございます。私はそれを試して、それが呼び出されなかった... – AnApprentice
はい、あなたのUserモデルで 'send_devise_notification'をオーバーライドします。私はDeviseの最新バージョンで通知を傍受することができました(私はログにsomethigを送って動作を証明しました)。しかし、すべての作業を行うには、コメントを読んでください。メソッドを定義するだけではなく、 'after_commit'フィルタを追加して、遅延ジョブ(または何でも)をビルドする必要があります。 –
ありがとうございますが、これは "send_confirmation_instructions"が存在する場所ではありませんか?そのメソッド "send_confirmation_instructions"を変更する必要があります。 – AnApprentice