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

问题描述

|| 我有一个问题,我正在使用DelayedJob通过对已删除对象的.delay方法调用来发送电子邮件我有一个观察员,检查after_destroy,它启动了一封延迟的电子邮件,但是我收到了 Delayed :: DeserializationError 我知道我收到此错误,原因是找不到“记录”,但是有一种方法可以绕过它,只发送包含delay_jobs表中信息的电子邮件,而不在数据库中查找对象?任何帮助,将不胜感激。谢谢!     

解决方法

        您需要做的就是将对象的各个部分包装到另一个对象中(在删除对象之前),然后在该对象上调用
.delay
notifier = WhatEver.new(self)
notifier.delay.send_email
在要破坏的东西的
before_destroy
回调中包装类似的内容。 “ 3”类只是从对象中提取信息的相关位,将这些位存储在实例变量中,然后“ 4”根据所提取的信息构建并发送电子邮件。 用这种方式做事会破坏电子邮件和即将死掉的对象之间的联系,应避免使用“ 5”。