Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 当Sidekiq worker试图太快地引用模型时,如何在其中重新加载模型_Ruby On Rails_Sidekiq - Fatal编程技术网

Ruby on rails 当Sidekiq worker试图太快地引用模型时,如何在其中重新加载模型

Ruby on rails 当Sidekiq worker试图太快地引用模型时,如何在其中重新加载模型,ruby-on-rails,sidekiq,Ruby On Rails,Sidekiq,当用户单击Rails UI中的按钮时,它会触发一个查找用户创建的记录的工作程序。例如,当用户创建一个“计划”在预定义的时间开始(有时是立即开始)时,工作人员会被解雇并尝试查找该计划,有时会出现“找不到记录”错误而失败 这是当前的解决方法。当工人开始太快,找不到时间表时,我现在让它再次调用自己,然后它就工作了。但是,似乎应该有一种方法来“重新加载”模型,而不是重新启动整个worker。处理这种情况的一种方法是利用ActiveRecord提供的回调周期 创建后浮现在脑海中:https://apido

当用户单击Rails UI中的按钮时,它会触发一个查找用户创建的记录的工作程序。例如,当用户创建一个“计划”在预定义的时间开始(有时是立即开始)时,工作人员会被解雇并尝试查找该计划,有时会出现“找不到记录”错误而失败


这是当前的解决方法。当工人开始太快,找不到时间表时,我现在让它再次调用自己,然后它就工作了。但是,似乎应该有一种方法来“重新加载”模型,而不是重新启动整个worker。

处理这种情况的一种方法是利用
ActiveRecord
提供的回调周期

创建后
浮现在脑海中:https://apidock.com/rails/ActiveRecord/Callbacks/after_create

因此,在您的
ScheduleTest
模型中:

after_create :trigger_worker

def trigger_worker
  TestWorker.perform(id)
end

或者,您可以调用
perform\u async(id)
将其转储到队列中

您正在查找:after\u commit回调,因此在提交数据库事务之前不会创建作业

after_create :trigger_worker

def trigger_worker
  TestWorker.perform(id)
end