【发布时间】:2013-03-20 01:52:13
【问题描述】:
我目前调用延迟作业 (gem delayed_job_mongoid) 发送确认电子邮件。但是,它似乎没有使用我传递的最新数据,而是使用缓存版本。见下文:
我的控制器:
...
_user.calculate_orders
_user.save
_user.reload
Mailer.delay.order_reported(_user)
...
邮递员
class Mailer < Devise::Mailer
def order_reported(to_user)
@to_user = to_user
email_with_name = "#{@to_user.name} <#{@to_user.email}>"
mail(:to => email_with_name, :subject => "Test email")
end
end
例如,如果属性 _user.total_orders = 3 更新为 5 并保存。正确反映在数据库中,延迟的作业数据库记录包含更新信息 5,但发送电子邮件时,它使用缓存信息 3。
我也尝试过通过 rails 控制台调用该方法:
这工作并使用传递和更新信息的参数
Mailer.order_reported(u).deliver
这不起作用并使用缓存数据
Mailer.delay.order_reported(u)
【问题讨论】:
标签: ruby-on-rails-3 actionmailer delayed-job