2011-02-01 33 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. 

[....] 

希望这有助于其他呢!