ruby-on-rails - 如何查询delay_job处理程序

标签 ruby-on-rails delayed-job

我正在使用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/

相关文章:

ruby-on-rails - 启动Diaspora Pod时出错-!!无效的请求

mysql - 查询以查找日期介于开始日期和结束日期之间的记录,其中日期可能会重置为 0

从延迟作业调用时,ActionMailer 失败并显示 "undefined function"

ruby-on-rails - 在客户端等待时使用工作人员处理作业,并在完成后返回响应

ruby-on-rails - 将 Rails 与 Paperclip 和 SWFUpload 结合使用

ruby-on-rails - Rails 中的 AJAX。无法对帖子发表评论

ruby-on-rails - heroku 上的 slug 大小有多大影响

ruby-on-rails - 检查我是否在 delayed_job 进程中

ruby-on-rails - Rails - 延迟作业完成

ruby-on-rails - 使用 Delayed::Job 管理多个作业队列