как запросить обработчик delayed_job - PullRequest
14 голосов
/ 06 марта 2012

Я играю с 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 Ответ

23 голосов
/ 06 марта 2012

Вы используете 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
...