【问题标题】:Devise sending welcome email after confirmation设计确认后发送欢迎电子邮件
【发布时间】:2019-01-21 21:26:37
【问题描述】:

我正在使用 rails 5.2 并设计 4.4.3,我有可确认的工作,但是,我正在尝试使用它,所以当用户确认他们的帐户时,他们会收到另一封电子邮件,欢迎他们访问网站。

在注册时会发送确认电子邮件,并且可以通过单击电子邮件中的链接进行确认,但我希望在此之后发送的欢迎电子邮件目前不发送。

我的代码是这样的,我生成了一个 UserMailer 并完成了以下操作

user.rb型号

class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable, :confirmable,
         :recoverable, :rememberable, :trackable, :validatable

  has_one_attached :avatar

  def confirm!
    welcome_email
    super
  end

  protected

  def welcome_email
    UserMailer.welcome_email(self).deliver
  end
end

views/user_mailer/welcome_email.html.erb

<h2>Welcome <%= @user.email %></h2>

mailers/user_mailer.rb

class UserMailer < ApplicationMailer
  def welcome_email(user)
    @user = user
    mail(to: @user.email, subject: "Welcome! You are awesome!")
  end
end

【问题讨论】:

    标签: ruby-on-rails devise actionmailer devise-confirmable


    【解决方案1】:

    您可以使用after_confirmation 回调而不是尝试覆盖确认。

    def after_confirmation
      UserMailer.welcome_email(self).deliver
    end
    

    【讨论】:

    • 谢谢!它现在可以工作了,以供将来参考!
    【解决方案2】:
      def after_confirmation
        UserMailer.with(user: @user, password: @user.password).welcome_email.deliver_later
      end
    

    【讨论】:

      猜你喜欢
      • 2016-08-04
      • 1970-01-01
      • 2016-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多