Ruby on rails 活动工单的Rails设置(等待:2.5分钟)方法不起作用
在Redis服务器上使用resque_调度程序gem创建后台作业Ruby on rails 活动工单的Rails设置(等待:2.5分钟)方法不起作用,ruby-on-rails,redis,jobs,rails-activejob,resque-scheduler,Ruby On Rails,Redis,Jobs,Rails Activejob,Resque Scheduler,在Redis服务器上使用resque_调度程序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 AutoRej
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
很好用,但是
AutoRejectionJob.set(wait: 2.minutes).perform_later(self.id)
什么也不做。我没能纠正这个问题。新手到Rails,请帮忙。我看你的代码没有问题。 我选中了:
.set(等待:2.minutes)
在ruby 2.4.0之上的rails 5.0.2中正常工作
你的工作要求也是如此。
在我看来,你试图设置一个在别处使用的状态。
该错误可能是由于医嘱分配
在外部处理中被操纵(已销毁?)
既然你说你是rails的新手(我想这就是“新手”的意思),我想提出一些建议。如果你已经过去了,就不要理会他们
还有一些很棒的调试工具可以帮助您找到正在发生的事情:byebug、better\u errors、pry,当然还有rails控制台
。
帮自己一个忙:试试看
当我无法找到解决某些超出我理解范围的行为的方法时,我会使用一些“put”和一些“try/catch errors”结构(在ruby中开始)
AutoRejectionJob.set(wait: 2.minutes).perform_later(self.id)
def perform(*args)
puts "@@@@@@@ JOB TRIGGERED @@@@@@"
begin
order_assignment_id = args[0]
order_assignment = Estamps::OrderAssignment.find(order_assignment_id)
puts "#{order_assignment.inspect}"
if order_assignment.status_id == 1 || order_assignment.status_id == nil
order_assignment.status_id = 3
order_assignment.save!
end
puts "@@@@@@@ JOB DONE @@@@@@"
rescue StandardError => e
# ... display e.message ...
ensure
#...
end
end