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

[....] 

希望這有助於其他呢!