【问题标题】:Lost values after switching email sending from AR_Mailer to DelayedJob将电子邮件发送从 AR_Mailer 切换到 DelayedJob 后丢失值
【发布时间】:2011-02-01 16:43:22
【问题描述】:

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

【问题讨论】:

    标签: ruby-on-rails delayed-job ar-mailer


    【解决方案1】:

    我发现问题出在哪里。我在数据库中查看了在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.
    
    [....]
    

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

    【讨论】:

      猜你喜欢
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 2014-08-20
      • 2015-06-27
      • 1970-01-01
      • 2020-07-21
      • 1970-01-01
      • 2012-06-19
      相关资源
      最近更新 更多