В рельсах мне часто приходилось посылать электронное письмо кому-то о чем-то, что было удалено. Проблема заключается в том, что при написании асинхронной электронной почты объект был удален до создания электронной почты.Отправить async письмо об уничтоженных объектах
Обычно я добавляю целые числа и строки как параметры, как предлагает sidekiq. Я думал о выполнении этого:
mail = MyMailer.some_mail(recipient_id, deleted_object_id)
mail.delay.deliver
Но это не рекомендуется либо: избежать затягивания методы экземпляров
Я также считается 2 другие варианты, но я их не люблю вообще.
- Используйте act_as_paranoid, установив поле delete_at в записи вместо удаления из db.
- Рендер тело электронной почты, сохранить в БД и отправить позже
Все предложения на Проппер способ решить эту проблему?
по какой причине вам необходимо отправить электронное письмо? Если вам нужно подтвердить и это вариант, отмените удаление, возможно, параноик является хорошим вариантом. Но если нужно только уведомить, я думаю, что вариант состоит в том, чтобы сохранить только текст (тело электронной почты или некоторые подобные этому). – inye
Вы можете использовать свой первый вариант, и вы можете назначить задание на работу каждые три дня или каждую неделю (или что угодно, want), и эта работа будет искать эти записи с 'deleted_at <= 1.week.ago' и удалять эти старые записи. – fanta