Как обновлять данные каждый раз, когда отложенная работа выполняется в рельсах? - PullRequest
0 голосов
/ 06 апреля 2019

Я использую DelayedJob для планирования report и отправляю его на customer в рельсах.Customer может выбрать отчет за определенный промежуток времени.Например, customer может выбрать отчет от даты «05/04/2019» до даты «06/04/2019».Customer также может установить frequency и time .ie для ежедневного запуска отчета в определенное время.В этом случае даты from и to будут увеличиваться ежедневно.Если frequency равно monthly, даты будут обновлены соответствующим образом.

Мой код выглядит следующим образом:

Report#schedule метод:


      def schedule
        #send report to customer
      end
      handle_asynchronously :schedule,
        frequency: Proc.new{ |r| r.deliver_frequency },
        run_at: Proc.new { |r| r.next_reschedule_time },


      def deliver_frequency
        if frequency.eql?('daily')
          'daily'
        elsif frequency.eql?('monthly?')
          'monthly'
        end
      end

Символ 'издата и дата взяты из customer_params


    @customer.params[:from] = params[:from]
    @customer.params[:to] = params[:to]
    @customer.save

Указанные выше параметры сохраняются в атрибутах customer как:


    :id => 10167,
    :params => {
        "from" => "05/04/2019",
        "to" => "06/04/2019"
    }

Эти даты сохраняются в report_name который отправляется на customer.

Мой вопрос, как проверить, выполнил ли delayed_job заданную задачу, чтобы даты from и to могли быть обновлены.

Я хочу, чтобы при каждом выполнении метода schedule даты обновлялись в соответствии с частотой.Например: если отчет запланирован на «ежедневный», даты from и to должны обновляться ежедневно после выполнения schedule.

Аналогично, если частота «ежемесячная» и отчет запланирован на дату from: 22/3/2019 to: 22/4/2019, то при следующем выполнении метода расписания даты должны обновляться до from: 22/4/2019 to: 22/5/2019

Я попытался добавить+1 за сутки.Но это не будет работать для ежемесячной частоты.

Кто-нибудь может подсказать мне, как можно достичь вышеуказанного?

Спасибо

...