我有一个看起来像这样的着陆控制器:
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。