0

我已经使用 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

4

1 回答 1

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 <%=@password-%>. For security reasons please change this on your first connection.

[....]

希望这对其他人也有帮助!

于 2011-02-02T17:22:20.333 回答