Как запросить обработчик delayed_job

Я играю с delayed_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