0
私のアプリには複数のDeviseモデル(ユーザー、管理者など)があります。各モデルの#send_devise_notificationをオーバーライドすることで、Devise通知メールを非同期で正常に送信できます。DRY電子メールを非同期で送信する必要があるDevitsモデル
# user.rb, admin.rb, etc
private
##
# Uses Active::Job to send Devise's emails asynchronously.
##
def send_devise_notification(notification, *args)
devise_mailer.send(notification, self, *args).deliver_later
end
このコードはモデルのすべてでまったく同じですので、私は上記のように同じよう#send_devise_notification実装DeviseAsyncCapableと呼ばれる懸念を作ることができ考え出し。
# devise_async_capable.rb
module DeviseAsyncCapable
extend ActiveSupport::Concern
def send_devise_notification(notification, *args)
devise_mailer.send(notification, self, *args).deliver_later
end
end
# user.rb
class User < ActiveRecord::Base
include DeviseAsyncCapable
end
は、モデルの一つに懸念を含む、それをテストした後、懸念に規定された方法ではなく工夫が電子メールをインラインで送信され、呼び出されませんでした。このコードをどのようにDRYできますか?
が工夫 '後DeviseAsyncCapableを含める:database_autheticable' – bcd