私はユーザモデルを持つ基本的なアプリケーションを持っています。ユーザーがアカウントを作成すると、そのユーザーにメールを送信します。私はもともとコントローラー自体にこの設定をしていました。Ruby Guidesが私に尋ねるように私は実際にオブザーバを使用すべきですか
if @user.save
UserMailer.welcome_email(@user, new_session_url).deliver
redirect_to root_url, notice: 'User was successfully created. Please check your email for more information'
これは私にとっては当時のようでした。私は後でObservers in Railsについて学びました。オブザーバーを使用する一般的な例は、この電子メールロジックをコントローラーの外で "ユーザーオブザーバー"の上に移動することでした。これは素晴らしい考えのようでした。
私はすぐに2つの主要な問題に遭遇した:
- 私の観察者がnew_session_urlにアクセスすることはできません。私は本当に私の電子メールにユーザーにログインページに戻るリンクを含めることができるようにしたい。私は、この問題に触れることなく、これにオブザーバーを使用する例がたくさんあることにショックを受けています。
- 私のオブザーバーはフラッシュメッセージにアクセスできません。電子メールが送信されたことをユーザーに通知することはできません。
私の質問はこれです。私はここでオブザーバーを使うべきですか?私のように見え始めたのは、コントローラで直接コールバックを使用するほうがずっと簡単でした。これがオブザーバにとって適切なユースケースではない場合は何ですか?この状況は、オブザーバーを使用する主な例の1つと考えられます。
ありがとうございます。私は、html.erbファイルの電子メールがルートヘルパーにアクセスできることを知らなかった。それはそれを通過させるよりも簡単ですし、より理にかなっています。 – corsen