每当gem cron作业时的数据库时间比较

时间:2013-10-24 14:28:32

标签: ruby-on-rails ruby whenever

我正在编写一个每天在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 )

关于如何写得好的建议?

在控制台中响应是;

对于main:Object`

NameError: undefined local variable or method execution_time'

总体而言,有关如何改进代码的任何建议?

每当cron工作在这里;

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

1 个答案:

答案 0 :(得分:0)

假设列execution_time确实存在,请尝试:

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

旁注:

您似乎正在向task.lists传递给工作人员,但不应该是task.list_ids?将模型对象传递给worker是不好的做法,而是传递id。