改变devise_invitable邮件主题

时间:2013-06-20 06:26:39

标签: ruby-on-rails devise actionmailer rails-i18n devise-invitable

默认情况下,邀请邮件的主题是

  mailer:
      invitation_instructions:
        subject: 'Invitation instructions'

我想将其更改为

subject: '%{invited_by} has invited you!'

但是这需要对i18n的translate方法可以访问invite_by变量。

如何在不更改默认行为的情况下访问/声明此变量?

1 个答案:

答案 0 :(得分:29)

设计默认邮件程序对您不起作用,但设置自定义邮件程序并定义您自己的subject_for帮助程序非常容易:

# in config/initializers/devise.rb:
...
config.mailer = "CustomDeviseMailer"
...
# in app/mailers/custom_devise_mailer.rb:

class CustomDeviseMailer < Devise::Mailer
  protected

  def subject_for(key)
    return super  unless key.to_s == 'invitation_instructions'

    I18n.t('devise.mailer.invitation_instructions.subject', 
      :invited_by => resource.invited_by.try(:full_name) || 'Someone')
  end
end