我有一个问题,我使用DelayedJob发送电子邮件,使用.delay方法调用已删除的对象。我有一个Observer,用于检查after_destroy并启动延迟的电子邮件,但我正在
延迟:: DeserializationError
我知道我收到此错误导致找不到记录但是有没有办法绕过这个只是发送带有delayed_jobs表中信息的电子邮件而不查找数据库中的对象?任何帮助,将不胜感激。谢谢!
答案 0 :(得分:5)
您需要做的就是将对象的部分包装在另一个对象中(在删除之前),然后在其上调用.delay
:
notifier = WhatEver.new(self)
notifier.delay.send_email
在你正在摧毁的东西的before_destroy
回调中包裹类似的东西。 WhatEver
类只是从对象中提取相关信息,将这些位存储在实例变量中,然后WhatEver#send_email
根据提取的信息构建和发送电子邮件。
以这种方式做事会破坏电子邮件与(即将成为)死对象之间的联系,并应避免使用DeserializationError
。