在 Redis 服务器上使用 resque_scheduler gem 创建后台作业。
class Estamps::OrderAssignment < ActiveRecord::Base
after_save :enqueue_check_status
def enqueue_check_status
AutoRejectionJob.set(wait: 2.minutes).perform_later(self.id)
end
end
class AutoRejectionJob < ActiveJob::Base
queue_as :default
def perform(*args)
order_assignment_id = args[0]
order_assignment = Estamps::OrderAssignment.find(order_assignment_id)
if order_assignment.status_id == 1 || order_assignment.status_id == nil
order_assignment.status_id = 3
order_assignment.save!
end
end
end
在创建 OrderAssignment 记录或在 2 分钟后更新时,它应该运行 AutoRejection Job。这里的问题是 set(wait: 2.minutes) 似乎没有运行,即
AutoRejectionJob.perform_later(self.id)
工作得很好,但是
AutoRejectionJob.set(wait: 2.minutes).perform_later(self.id)
什么也没做。一直无法纠正问题。Rails 的新手,请帮忙。