devise.ja.ymlに個別に定義しても出来ますが、アプリ名を1箇所で定義して共通化したいので、少しカスタマイズしてみました。

冗長な方法だと

config/locales/devise.ja.yml

ja:
  devise:
    mailer:
      confirmation_instructions:
        subject: "[RailsAppOrigin] メールアドレス確認のお願い"
        admin_user_subject: "[RailsAppOrigin Admin] メールアドレス確認のお願い"
      email_changed:
        subject: "[RailsAppOrigin] メールアドレス変更完了のお知らせ"
        admin_user_subject: "[RailsAppOrigin Admin] メールアドレス変更完了のお知らせ"
      reset_password_instructions:
        subject: "[RailsAppOrigin] パスワード再設定方法のお知らせ"
        admin_user_subject: "[RailsAppOrigin Admin] パスワード再設定方法のお知らせ"
      password_change:
        subject: "[RailsAppOrigin] パスワード変更完了のお知らせ"
        admin_user_subject: "[RailsAppOrigin Admin] パスワード変更完了のお知らせ"
      unlock_instructions:
        subject: "[RailsAppOrigin] アカウントロックのお知らせ"
        admin_user_subject: "[RailsAppOrigin Admin] アカウントロックのお知らせ"

共通化してみる

config/locales/ja.yml に定義して、ページタイトルにも使っているので、これを使いたい。

ja:
  app_name: "RailsAppOrigin"

config/initializers/devise.rb に追加

  config.mailer = 'DeviseMailer'

app/mailers/devise_mailer.rb を作成

class DeviseMailer < Devise::Mailer
  def confirmation_instructions(record, token, opts = {})
    update_mail_subject(super)
  end

  def reset_password_instructions(record, token, opts = {})
    update_mail_subject(super)
  end

  def unlock_instructions(record, token, opts = {})
    update_mail_subject(super)
  end

  def email_changed(record, opts = {})
    update_mail_subject(super)
  end

  def password_change(record, opts = {})
    update_mail_subject(super)
  end

  private

  # メールタイトルにアプリ名を追加
  def update_mail_subject(mail)
    mail.subject = mail.subject.gsub(/%{app_name}/, t('app_name'))
    mail
  end
end

config/locales/devise.ja.yml を変更

ja:
  devise:
    mailer:
      confirmation_instructions:
        subject: "【%{app_name}】メールアドレス確認のお願い"
        admin_user_subject: "【%{app_name} Admin】メールアドレス確認のお願い"
      email_changed:
        subject: "【%{app_name}】メールアドレス変更完了のお知らせ"
        admin_user_subject: "【%{app_name} Admin】メールアドレス変更完了のお知らせ"
      reset_password_instructions:
        subject: "【%{app_name}】パスワード再設定方法のお知らせ"
        admin_user_subject: "【%{app_name} Admin】パスワード再設定方法のお知らせ"
      password_change:
        subject: "【%{app_name}】パスワード変更完了のお知らせ"
        admin_user_subject: "【%{app_name} Admin】パスワード変更完了のお知らせ"
      unlock_instructions:
        subject: "【%{app_name}】アカウントロックのお知らせ"
        admin_user_subject: "【%{app_name} Admin】アカウントロックのお知らせ"

【参考】ここまでのコミット内容
https://dev.azure.com/nightonly/rails-app-origin/_git/rails-app-origin/commit/49e392efbd482f770b2db448feec79af67d56a10

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です