ruby-on-rails - 在 devise_invitable 中覆盖邮件程序?

标签 ruby-on-rails devise

我希望我的应用程序的邀请来自邀请者而不是系统电子邮件地址。如何从 devise.rb 覆盖 config.mailer_sender?

我在我的邮件中有这个并且已经确认它被调用了,但是它没有覆盖 :from .注意:这是一个私有(private)方法,我尝试了它作为一个公共(public)方法没有效果。

private

def headers_for(action)
  if action == :invitation_instructions
    headers = {
      :subject       => "#{resource.invited_by.full_name} has invited you to join iTourSmart",
      :from          => resource.invited_by.email,
      :to            => resource.email,
      :template_path => template_paths
    }
  else
    headers = {
      :from          => mailer_sender(devise_mapping),
      :to            => resource.email,
      :template_path => template_paths
    }
  end

  if resource.respond_to?(:headers_for)
    headers.merge!(resource.headers_for(action))
  end

  unless headers.key?(:reply_to)
    headers[:reply_to] = headers[:from]
  end

  headers
end

最佳答案

没有任何 hacks/monkey 补丁的更好的解决方案是:
例如,在您的模型中:

def invite_and_notificate_member user_email
  member = User.invite!({ email: user_email }, self.account_user) do |u|
    u.skip_invitation = true
  end
  notificate_by_invitation!(member)
end

def notificate_by_invitation! member
  UserMailer.invited_user_instructions(member, self.account_user, self.name).deliver
end

在邮件中:
  def invited_user_instructions(user, current_user, sa)
    @user = user
    @current_user = current_user
    @sa = sa
    mail(to: user.email, subject: "#{current_user.name} (#{current_user.email}) has invited you to the #{sa} account ")
  end

因此,您可以将任何主题/数据放在邮件正文中。

祝你好运!

关于ruby-on-rails - 在 devise_invitable 中覆盖邮件程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6412761/

相关文章:

ruby-on-rails - 如何正确扩展 Devise Recoverable?

ruby-on-rails - 设计 - 创建用户帐户并确认而不发送电子邮件?

ruby-on-rails - 设计自定义 after_update_path_for 不被调用(Rails 4)

ruby-on-rails - Rails - 如何将 .new/.save 更改为 .create

html - Rails4 : How to create Image Links with Hover?

ruby-on-rails - Ruby on Rails 模式 - 装饰者与演示者

ruby - Devise & CanCan——CanCan 2.0 API 的问题

ruby-on-rails - Rails 中首选的 fixture 替换插件?

ruby-on-rails - 未定义的方法 `layout'

ruby-on-rails - 我如何确定使用哪种 Devise/Warden 策略来验证/登录用户?