发送有关已销毁对象的异步电子邮件

时间:2016-10-27 12:37:11

标签: ruby-on-rails sidekiq

在rails中,我经常不得不向某人发送有关已删除内容的电子邮件。问题是,在异步编写电子邮件时,在生成电子邮件之前已删除该对象。

我通常只添加整数和字符串作为参数,就像sidekiq建议的那样。我想过这样做:

mail = MyMailer.some_mail(recipient_id, deleted_object_id)
mail.delay.deliver

但不建议这样做:避免延迟实例上的方法

我还考虑了其​​他2个选项,但我根本不喜欢它们。

  1. 使用acts_as_paranoid,在记录上设置deleted_at字段,而不是从db中删除。
  2. 呈现电子邮件正文,保存到数据库并稍后发送
  3. 对propper方法有什么建议来解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

删除对象并发送电子邮件时,您可以创建一个可以执行这两项操作的sidekiq作业。所以你只需要向工作发送一个id。 sidekiq作业删除您的对象并在作业中同步发送电子邮件。对于您的请求,邮件仍然是异步发送的。