设计 - 手动发送确认电子邮件

时间:2012-04-03 17:32:02

标签: ruby-on-rails ruby devise

我有一个看起来像这样的着陆控制器:

class LandingsController < ApplicationController
  # POST /landing
  def create
    @user = User.new(params[:user])

    respond_to do |format|
      if @user.save
        LandingsMailer.thanks(@user).deliver
        format.html { render :file => File.join(Rails.root, 'public', 'landing', 'thanks.html'),
                           :status => :created }
        format.json { render json: @user, status: :created }
      else
        format.html { redirect_to root_url }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
  end
end

User模型中,我重写了以下的Devise方法:

def send_confirmation_instructions
  if invited_at.present?
    self.confirmation_token = nil if reconfirmation_required?
    @reconfirmation_required = false

    generate_confirmation_token! if self.confirmation_token.blank?
    self.devise_mailer.confirmation_instructions(self).deliver
  end
end

这样,我想手动向用户发送确认电子邮件,仅当user.invited_at不为空时(因为我邀请了他)。

这应该有效...但在使用Landing控制器发布邀请请求后,我收到了一封Devise电子邮件,其中包含确认我的电子邮件地址的链接。就像这个:

  

欢迎foo@bar.com!

     

您可以通过以下链接确认您的帐户电子邮件:

     

确认我的帐户

你明白为什么吗?感谢。

我在Rails 3.2.3和Ruby 1.9.3上使用Devise 2.0.4。

0 个答案:

没有答案