在rails中,我经常不得不向某人发送有关已删除内容的电子邮件。问题是,在异步编写电子邮件时,在生成电子邮件之前已删除该对象。
我通常只添加整数和字符串作为参数,就像sidekiq建议的那样。我想过这样做:
mail = MyMailer.some_mail(recipient_id, deleted_object_id)
mail.delay.deliver
但不建议这样做:避免延迟实例上的方法
我还考虑了其他2个选项,但我根本不喜欢它们。
对propper方法有什么建议来解决这个问题吗?
答案 0 :(得分:1)
删除对象并发送电子邮件时,您可以创建一个可以执行这两项操作的sidekiq作业。所以你只需要向工作发送一个id。 sidekiq作业删除您的对象并在作业中同步发送电子邮件。对于您的请求,邮件仍然是异步发送的。