Потерянные значения после переключения отправки электронной почты с AR_Mailer на DelayedJob
Я использую AR_Mailer около 6 месяцев, не сталкиваясь с проблемами. Недавно я добавил DelayedJob для некоторых административных заданий. Поскольку DelayedJob также хорошо обрабатывает электронные письма (благодаря гему DelayedMailer), я полностью удалил AR_Mailer из своего приложения.
Все отлично работает, кроме этого письма. Пароль, сгенерированный автоматически, теперь утерян.
#app/models/notifier.rb
def activation_instructions(user)
from default_email
@bcc = BACK_UP
@subject = "Activation instructions"
recipients user.email
sent_on Time.now
body :root_url => root_url, :user => user
end
#app/views/notifier/activation_instructions.erb
Thanks for signing up.
Your password is <%=@user.password-%>. For security reasons please change this on your first connection.
[....]
Любая идея о том, почему эта ошибка возникает? Спасибо!
Конфигурация: Rails 2.3.2 и DelayedJob 2.0.4
1 ответ
Я выяснил, где проблема. Я посмотрел в базе данных на запись, созданную в таблице delayed_jobs:
--- !ruby/struct:Delayed::PerformableMethod
object: LOAD;Notifier
method: :deliver_activation_instructions!
args:
- LOAD;User;589
user
Параметр перезагружается из базы данных с помощью delayed_job перед отправкой электронного письма. В этом случае пароль теряется, потому что он не сохраняется в базе данных.
Поэтому я обновил код, чтобы явно передать пароль:
#app/models/notifier.rb
def activation_instructions(user, password)
from default_email
@bcc = BACK_UP
@subject = "Activation instructions"
recipients user.email
sent_on Time.now
body :root_url => root_url, :user => user, :password => password
end
#app/views/notifier/activation_instructions.erb
Thanks for signing up.
Your password is <%=@password-%>. For security reasons please change this on your first connection.
[....]
Надеюсь, что это помогает другим!