2013-05-20 3 views
0

Я успешно установил приложение в своем приложении rails и пользовательская регистрация работает отлично. Я также настроил его так, чтобы пользователи могли подтвердить свои учетные записи, отправив электронное письмо. Это отлично работает, когда пользователь подписывается в первый раз (они получают подтверждающее сообщение с ссылкой на подтверждение).Rails разрабатывает отправку писем по неправильному адресу электронной почты

Однако, когда пользователь изменяет его/ее адрес электронной почты от [email protected] к [email protected], почта доставляется в [email protected] и ссылка для подтверждения не имеет маркера подтверждения он выглядит как

http://{HOST}/users/confirmation 

Вместо нормального

http://{HOST}/users/confirmation?confirmation_token=TOKEN_HERE 

Когда я сохраняю новое электронное письмо [email protected], он теперь доставляется на этот адрес, но токен подтверждения недействителен, так как он не соответствует таковому в дБ.

Я не знаю, что пошло не так.

confirmation_instructions.html.erb

<p>Welcome <%= @resource.unconfirmed_email? ? @resource.unconfirmed_email : @resource.email %>!</p> 

<p>You can confirm your account email through the link below:</p> 

<p><%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @resource.confirmation_token) %></p> 

Я также в DEViSE инициализаторе

Am также с использованием sideqik запаздывающих заданий. Все электронные письма обработаны sideqik

Любая помощь? Thanks

ответ

0

Я понимаю, что это когда-то было опубликовано, но я столкнулся с этой проблемой и разрешил ее.

В моем случае я модернизировал Завещание от v2.0.4 до v2.2.6 - который, как представляется, новая версия, которая поддерживает Rails 3.

Я обезжиренное change log, в котором упоминается это изменение в v2.2.0 :

All mailer methods now expect a second argument with delivery options. 

К сожалению, он не говорит, для чего конкретно используется второй аргумент; однако получается, что буквально то, что вы ожидаете ... Хэш параметров, который передается методу Mailers mail.

Я предполагаю, что, если вы похожи на меня, ваша предыдущая Разрабатывают :: Mailer была линия-то вроде следующего:

def confirmation_instructions(record, opts) 
    mail :to => record.email, :template_name => 'confirmation_instructions' 
    end 

Проблема заключается в том, что электронная почта предыдущий подтвержденный адрес электронной почты, а не новый неподтвержденный. Следовательно, вы, вероятно, захотите позвонить по почте с хэшем параметров, который вы передали, который теперь будет содержать unconfirmed_email в своем :to ключе, например.

{:to => "[email protected]"} 

Так просто изменить почтовые звонки что-то подобное:

def confirmation_instructions(record, opts) 
    mail opts.merge(:template_name => 'confirmation_instructions') 
    end 
Смежные вопросы