Потерянные значения после переключения отправки электронной почты с AR_Mailer на DelayedJob - PullRequest
0 голосов
/ 01 февраля 2011

Я использую 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 Ответ

2 голосов
/ 02 февраля 2011

Я выяснил, где проблема. Я посмотрел в базе данных на запись, созданную в таблице 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.

[....]

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

...