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
