Моя система транзакционной электронной почты настроена, и по умолчанию люди получают электронные письма по мере того, как происходят события:
class Comment
after_create :email_original_poster
def email_original_poster
UserMailer.delay.notify_author_of_comment self
end
end
Однако вместо того, чтобы получать электронное письмо как оно есть, кусок моих пользователей предпочли бы ежедневный или еженедельный дайджест.
Какой самый чистый и элегантный способ реализовать это?
У меня уже есть delayed_job
, но на самом деле это не похоже на задание delayed_job
, так как я постановка в очередь данных, которые необходимо обработать, а не действий, которые необходимо выполнить.
... не изобретая заново систему очередей
Я знаю, что очевидным решением является таблица queued_emails
, и, конечно, я мог бы это сделать. Причина, по которой я задаю этот вопрос, заключается в том, что это значит заново изобретать систему очередей. Существует не только множество систем очередей, но и, как указывает этот хорошо сформулированный пост от Percona, неплохо не катить свою собственную:
Реализовали ли вы дайджест электронной почты, использовали ли вы delayed_job
и что вы сделали узнать?