0

我正在编写像这样在 Schedule 模型中定义的任何时候的跑步者;

def self.scheduled_jobs   
    jobs = Schedule.where(execution_time <= Time.now )
      if !jobs.nil?
      jobs.each do |job|
        task = Schedule.find(job)
        MessageWorker.perform_async(task.message_id, task.lists, task.user_id)
        task.destroy
      end
   end
end

这里的查询有问题;

jobs = Schedule.where(execution_time <= Time.now )

以及如何写好它的建议?

在控制台中的响应是;

NameError: undefined local variable or methodmain:Object 的 execution_time'

总的来说,关于如何改进代码的任何建议?

每当 cron 工作在这里;

set :output, "/log/cron_log.log"
every 5.minute do
   runner "Schedule.scheduled_jobs"
end
4

1 回答 1

0

假设该列execution_time确实存在,请尝试以下操作:

Schedule.where('execution_time <= ?', Time.now)

附带说明:

看来您正在传递task.lists给工人,但不是task.list_ids吗?将模型对象传递给工作人员是不好的做法,而是传递 id。

于 2013-10-24T14:35:31.307 回答