2011-05-29 52 views
1

我有一个问题,我使用DelayedJob发送电子邮件,使用.delay方法调用删除的对象。我有检查after_destroy的观察员,它揭开序幕延迟的电子邮件,但我越来越Rails - 延迟作业 - 发送已删除对象的电子邮件

延迟:: DeserializationError

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

回答

5

所有你需要做的是包裹你的对象的部分在另一个对象(删除之前),然后调用该.delay

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

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

这样做会破坏电子邮件与(即将成为)死对象之间的连接,并应避免DeserializationError

+0

谢谢你应该使用before_destroy,没有修复它。 – bokor 2011-06-06 14:22:52