Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 活动工单的Rails设置(等待:2.5分钟)方法不起作用_Ruby On Rails_Redis_Jobs_Rails Activejob_Resque Scheduler - Fatal编程技术网

Ruby on rails 活动工单的Rails设置(等待:2.5分钟)方法不起作用

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

在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 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