Потерянные значения после переключения отправки электронной почты с 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.

[....]

Надеюсь, что это помогает другим!

Другие вопросы по тегам