【Rails】Devise で Sign up 時に confirmableモジュールを使わずに Welcome メールを送信する

アカウト登録にDeviseのconfirmableモジュールを使かった場合、ユーザーに確認メールが送られ、そこに記載されたリンクをクリックしたら、アカウント登録完了となる機能を実装することができます。この方法とは別に本記事では、Deviseでアカウント登録はするが、シンプルに即アカウント登録完了とし、Welcomeメールのみ送る方法を実装してみました。
実装方法としてはDeviseのコントローラーは極力触らずに、Active Record コールバックの after_create を使っています。

環境はこちらです

メーラークラスとメソッドを指定して、次のコマンドを入力します。

メーラーメソッドの編集

UserMailerのuser_welcome_mailメソッド内に渡したい変数を定義します。
メソッドが呼ばれた後は、自動的に同名のviewsを読み込みます。
その他全メーラー共通の設定があればapplication_mailerに書きます。

app/mailers/user_mailer.rb

メールテンプレートの作成

メールテンプレートはデフォルトで views/user_mailer/user_welcome_mail.html.erb と views/user_mailer/user_welcome_mail.text.erb の二種類の形式が提供されていますが、これは「 HTMLメールが送信できない場合にはテキストベースのメールを送信する 」といった動作を保証するためであるので、二種類とも作成しておくことが望まれます。

app/views/user_mailer/user_welcome_mail.html.erb

app/views/user_mailer/user_welcome_mail.text.erb

Models

after_create コールバックを使うことで、Userが新規作成された後にメールを送信するためのメソッドを呼び出すことができます。
confirmableモジュールを使う場合:confirmableの記載をしますが、今回はしていません。

app/models/user.rb

メールサーバーの設定

開発環境のメールサーバの設定はGmailの場合です。

config/environments/development.rb

テストしてみてメールが届いたけど、引数が渡されなかったのですが、私の場合、configure_sign_up_paramsの設定を忘れていました!汗

app/controllers/users/registrations_controller.rb

以上です!ご覧いただきありがとうございました!!😆


投稿者:

Shuji Tenra

「仕事に特化したQ&AサイトJobQuery【ジョブクエリ】」の開発/運営をしています。https://jobquery.jp