Запустите отложенное задание в указанное время c - PullRequest
1 голос
/ 04 февраля 2020

У меня есть работа по доставке электронной почты, которую я хотел бы запустить в указанное пользователем время. У меня есть столбец datetime delivery_at, в который я должен доставлять электронные письма. Я использую отложенное задание для выполнения фоновых заданий.

отложенное задание позволяет мне указать разницу во времени, а не точное время для планирования задания.

  GiftCardMailerJob.set(wait: delay_by.minutes.from_now).perform_later(go)

Есть ли способ, которым я напрямую даю время в поле delivery_at и запускаю отложенное задание в в это время?

Если нет, то как мне найти разницу во времени?

((deliver_at - Time.now) / 60).minutes.from_now

Должен ли быть правильный подход?

1 Ответ

1 голос
/ 04 февраля 2020

Вы можете использовать метод enqueue в delayed_jobs

Delayed::Job.enqueue(GiftCardMailerJob.new, :run_at => deliver_at)

Если вы видите таблицу delayed_jobs в базе данных, поле run_at имеет тип datetime, и вы можете иметь любое значение datetime для него.

...