В поле Задержка задания есть поле run_at. Вы должны иметь рабочий процесс в фоновом режиме, всегда работающий и ищущий задания, которые должны быть запущены, но если ваше приложение делает это много, это может быть проще, чем всегда писать новые задания cron.
Таким образом, у вас может быть метод в вашей модели Contest
, который вызывается в обратном вызове after_create
, который устанавливает отложенное задание для отправки электронного письма случайному победителю на указанную дату.
Если это разовая или очень редкая сделка, я соглашусь использовать всякий раз, когда