[英]Lost values after switching email sending from AR_Mailer to DelayedJob
我一直在使用AR_Mailer大约6个月没有遇到问题。 我最近为一些管理后台工作添加了DelayedJob。 由于DelayedJob还可以很好地处理电子邮件(由于DelayedMailer gem),因此我从应用程序中完全删除了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
我发现了问题所在。 我在数据库中查找了delay_jobs表中创建的条目:
--- !ruby/struct:Delayed::PerformableMethod
object: LOAD;Notifier
method: :deliver_activation_instructions!
args:
- LOAD;User;589
在发送电子邮件之前,delayed_job从数据库重新加载了user
参数。 在这种情况下,密码将丢失,因为它没有存储在数据库中。
因此,我更新了代码以显式传递密码:
#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.
[....]
希望这对其他人也有帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.