У меня есть настройка транзакционной системы электронной почты, и по умолчанию люди получают электронные письма по мере возникновения событий:
class Comment
after_create :email_original_poster
def email_original_poster
UserMailer.delay.notify_author_of_comment self
end
end
Однако вместо того, чтобы получать электронную почту как есть, часть моих пользователей предпочла бы ежедневный или еженедельный дайджест.
Какой самый чистый и элегантный способ реализовать это?
У меня уже есть отложенное _ задание
, но это не кажется заданием отложенное _ задание
, так как я подаю в очередь данные, которые необходимо обработать, а не действия, которые необходимо выполнить.
... без создания новой системы очередей
Я знаю, что очевидным решением является таблица поставленных в очередь _ электронных писем
, и, конечно, я мог бы сделать это. Причина, по которой я задаю вопрос, в том, что для этого нужно заново создать систему очередей. Мало того, что там много систем очередей, но как этот хорошо сформулированный пост от Percona точек out, это хорошая идея, чтобы не своя:
Внедрили ли Вы дайджест по электронной почте, использовали ли Вы delent _ job
и чему Вы научились?
-121--1673504-
Избавить меня от смерти насильника - есть ли какой-либо лучший способ обработки такого рода структуры?
while(condition) {
$this->phase1();
$this->phase2();
$this->phase3();
$this->phase4();
}
На протяжении любого из этих методов можно было выполнить условие . НЕМЕДЛЕННО после выполнения условия цикл ДОЛЖЕН выйти. Если бы я мог вызвать break;
внутри phase2 ();
например, мне бы не нужен оператор goto (но, конечно, это вызвало бы ошибку).