我正在使用DelayedJob调度report
并将其发送到Rails中的customer
中。 Customer
可以选择特定持续时间的报告。例如,customer
可以选择从日期'05 / 04/2019'到日期'06 / 04/2019'的报告。 Customer
也可以设置frequency
和time
,即每天在特定时间运行报告。在这种情况下,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
。
我的问题是,如何检查delay_job是否已执行给定任务,以便可以更新from
和to
日期。
我要实现的是,每次执行schedule
方法时,日期都应根据频率进行更新。
例如:如果报告计划为“每日”,则from
和to
日期应在执行schedule
之后每天更新。
如果频率是“每月”,并且报表安排在日期from: 22/3/2019 to: 22/4/2019
上,那么,在下次执行计划方法时,日期应该更新为from: 22/4/2019 to: 22/5/2019
我尝试每天添加+1
。但这不适用于每月一次的频率。
有人可以指导我如何实现上述目标吗?
谢谢