我正在使用delay_job进行游戏,我需要删除具有指定处理程序值的所有作业,我以此方式尝试过
class Auction < ActiveRecord::Base
def clean_jobs
Delayed::Job.all.each do |job|
job.delete if job.payload_object.auction_id == id
end
end
end
它可以工作,但是我必须遍历整个队列……不酷。我该如何解决?
谢谢
最佳答案
您正在使用payload_object,这是一个YAML文本。
可能这段代码做同样的事情。
Delayed::Job.where("handler LIKE '%auction_id: #{id}%'").delete_all
对于双重检查:
Delayed::Job.where("handler LIKE '%auction_id: #{id}%'").each do |job|
job.delete if job.payload_object.auction_id == id
end
关于ruby-on-rails - 如何查询delay_job处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9589630/