如何查询延迟作业处理程序
Posted
技术标签:
【中文标题】如何查询延迟作业处理程序【英文标题】:how to query delayed_job handler 【发布时间】:2012-03-24 06:45:21 【问题描述】:我在玩delayed_job,需要删除所有指定handler值的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
它有效,但我必须通过整个队列......不酷。我该如何解决这个问题? 谢谢
【问题讨论】:
【参考方案1】:您正在使用 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
【讨论】:
您可以在属性之前使用空格并在之后使用换行符以避免检查每个 payload_object - 例如延迟::Job.where("handler LIKE '% user_id: #self.id%\n'")以上是关于如何查询延迟作业处理程序的主要内容,如果未能解决你的问题,请参考以下文章