У меня есть контроллер посадки, похожий на этот:
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!
Вы можете подтвердить адрес электронной почты своей учетной записи по ссылке ниже:
Подтвердить мою учетную запись
Вы понимаете, почему?Спасибо.
Я использую Devise 2.0.4 на Rails 3.2.3 и Ruby 1.9.3.