我有一个ActiveJob,它会在记录创建后X分钟将状态字段从“待定”更改为“上线”。它运作良好。
当用户在X分钟内编辑记录时,我需要推迟这个状态的更改,即重新启动计时器。我可以取消ActiveJob并创建一个新的来实现。然而,Rails ActiveJob指南中没有提到应该如何完成此操作。
我发现我可以像这样将ActiveJob分配给一个变量:
然而,在控制台中,这两种(猜测)都不起作用:
那么我该怎么做呢?
当用户在X分钟内编辑记录时,我需要推迟这个状态的更改,即重新启动计时器。我可以取消ActiveJob并创建一个新的来实现。然而,Rails ActiveJob指南中没有提到应该如何完成此操作。
我发现我可以像这样将ActiveJob分配给一个变量:
j = ThingLiveJob.set(wait: 1.minute).perform_later(@thing)
在这行代码(控制器中的)后面立即使用byebug
,我看到它输出如下:
#<ThingLiveJob:0x000000134a5fc0 @arguments=[#<Thing id: 1095, body: "Whatever", user_id: 1, created_at: "2018-11-19 10:34:24", updated_at: "2018-11-19 10:34:24", status: "pending">], @job_id="aab28c66-f8b4-491e-9c7f-af6f27aa482e", @queue_name="default", @priority=nil, @executions=0, @scheduled_at=1542623724.674397, @provider_job_id="61c154d5-9c1b-45a1-8487-824a4412c53c">
然而,在控制台中,这两种(猜测)都不起作用:
j.destroy
j.delete
那么我该怎么做呢?
ThingLiveJob.set(wait: 1.minute).perform_later(@thing.id.to_s, @thing.updated_at.to_i.to_s)
。 - MSC