私は実際に、新しいメーリング リストをオンザフライで作成し、テンプレートをアップロードして、そのリストから次のような方法で購読者に電子メールを送信できるニュースレター マスメーリング ソフトウェアを作成しています。
@suscribers.each do |suscriber|
NewsletterMailer.delay.send("#{@list.name}_newsletter", suscriber, @newsletter)
end
(遅延方法は、バックグラウンド ジョブに sidekiq を使用しているためであることに注意してください)
このロジックを処理するために、NewsletterMailer クラス内の ActionMailer::Base から method_missing をオーバーライドしようとしましたが、実行されないようです。「NewsletterMailer:Class の未定義メソッド `testing_newsletter'」という NoMethodError を受け取りました。
ActionMailer::Base#method_missing ソース コードを調べたところ、既にいくつかのロジックが実行されていることがわかり、new を呼び出さずに Mailer.name_of_the_email.deliver を実行できるようになりました。また、このメソッドは保護されています。
しかし、NewsletterMailer クラス内にハードコーディングされていないメソッドからメールを送信する方法はありますか? メソッドを ActionMailer コントローラに動的に追加する方法はありますか?
どうもありがとう。