2011-08-02 3 views
3

私は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 

上記のように、どのアプローチがより優れていますか?

+1

Mailer postfixを使って、Railsの他のコンポーネントと一貫性を持たせます。コントローラ、ヘルパー...メーラーはメーラーであり、モデルではありません。理由:UserMailerを使用する場合、Userモデルを作成することができます。したがって、衝突はありません(Userメーラー)。また、異なるファイルにメーラーがあるため、より良いロジック分離ができます。 –

答えて

0

これはもっと一般的な問題の特定のインスタンス、つまり「いくつのファイル/ディレクトリ/パッケージを自分のコードに置くべきか?あなたのメーラが何とか異なっていない限り(例えば、異なるヘッダ/ファイルのインクルード、異なるメールサーバの使用など)、これは主に趣味の問題です。

個人的には、関連するチャンクに分割する傾向がありますが、そうすることで利益が見られない場合は、そうしないでください。

関連する問題