【问题标题】: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

它有效,但我必须通过整个队列......不酷。我该如何解决这个问题? 谢谢

【问题讨论】:

    标签: ruby-on-rails delayed-job


    【解决方案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'")
    猜你喜欢
    • 2016-04-16
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    • 2014-10-14
    • 1970-01-01
    • 2016-10-10
    • 2020-04-05
    相关资源
    最近更新 更多