私はActionMailerをRails3(3.1の場合は違いがあります)で使用するときの良いデザインパターンをよりよく理解しようとしています。アクションメーラーのデザインパターン:各モデル(UserMailer、ProductMailerなど)ごとに単一のメーラー(たとえば、Notifier)またはメーラーを持つ方が良いですか?
一般的に、Railsアプリケーションの場合、一般的には、アプリケーション全体に対して単一のメーラーを作成する方が良いです(たとえば、Notifierのようなものを呼び出すなど)。メールを必要とするモデルを反映するメーラーを作成しますか?例えば、UserMailer、ProductMailerなど
デフォルトは1つまたは複数に設定されていますが、どちらの方法がより優れていますか、どのような方法を使用しますか?
おかげ
Evolve2k
TL; DR
背景情報
過去のプロジェクトでは、我々は一般的にアプリのための単一のメーラーが通知呼ばれており、我々は使用これは私たちが送り出すすべてのメールのためです。 私はここから来ると思います:http://lindsaar.net/2010/1/26/new-actionmailer-api-in-rails-3
例: RailsGuidesではなく、私は新しいメーラー私はいくつかのメール関連の活動を行う必要があるモデルを持っているそれぞれの時間を作る必要があることを私に暗示するように見えるしかし
class Notifier < ActionMailer::Base
default :from => "[email protected]"
end
。 どのようにモデルがコントローラと同じ名前のビューを持っているように、モデルにはその名前のActionMailerがあるかもしれません。
ここに示されているように:http://guides.rubyonrails.org/action_mailer_basics.html
など。
class UserMailer < ActionMailer::Base
default :from => "[email protected]"
end
上記のように、どのアプローチがより優れていますか?
Mailer postfixを使って、Railsの他のコンポーネントと一貫性を持たせます。コントローラ、ヘルパー...メーラーはメーラーであり、モデルではありません。理由:UserMailerを使用する場合、Userモデルを作成することができます。したがって、衝突はありません(Userメーラー)。また、異なるファイルにメーラーがあるため、より良いロジック分離ができます。 –