Rails - 延迟作业 - 发送已删除对象的电子邮件

时间:2011-05-29 16:23:25

标签: ruby-on-rails delayed-job

我有一个问题,我使用DelayedJob发送电子邮件,使用.delay方法调用已删除的对象。我有一个Observer,用于检查after_destroy并启动延迟的电子邮件,但我正在

延迟:: DeserializationError

我知道我收到此错误导致找不到记录但是有没有办法绕过这个只是发送带有delayed_jobs表中信息的电子邮件而不查找数据库中的对象?任何帮助,将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:5)

您需要做的就是将对象的部分包装在另一个对象中(在删除之前),然后在其上调用.delay

notifier = WhatEver.new(self)
notifier.delay.send_email

在你正在摧毁的东西的before_destroy回调中包裹类似的东西。 WhatEver类只是从对象中提取相关信息,将这些位存储在实例变量中,然后WhatEver#send_email根据提取的信息构建和发送电子邮件。

以这种方式做事会破坏电子邮件与(即将成为)死对象之间的联系,并应避免使用DeserializationError