2011-02-01 7 views
0

Я использую AR_Mailer около 6 месяцев, не сталкиваясь с проблемами. Недавно я добавил DelayedJob для некоторых административных заданий. Поскольку DelayedJob также отлично справляется с электронными сообщениями (благодаря драгоценности DelayedMailer), я полностью удалил AR_Mailer из своего приложения.Потерянные значения после переключения отправки электронной почты с AR_Mailer на DelayedJob

Все работает отлично, за исключением этого письма. Пароль автоматически генерируется автоматически.

#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 <%[email protected]%>. For security reasons please change this on your first connection. 

[....] 

Любая идея о том, почему эта ошибка возникает? Спасибо!

Конфигурация: Рельсы 2.3.2 & DelayedJob 2.0.4

ответ

2

Я узнал, где проблема. Я посмотрел в базе данных на входе, созданный в таблице 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 <%[email protected]%>. For security reasons please change this on your first connection. 

[....] 

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