2013-10-24 45 views
0

我正在寫這樣的時間表模型中定義的每當跑步者;數據庫每當gem cron作業的時間比較

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 method execution_time」主:Object`

總體上如何提高代碼的任何建議?

每當cron工作在這裏;

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

用''execution_time <=?「,Time.now'代替'where'條件 – tihom

回答

0

假設列execution_time確實存在,試試這個:

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

在一個側面說明:

似乎你傳遞task.lists給工人,但不應該是是task.list_ids?將模型對象傳遞給工作者是不好的做法,而不是傳遞ID。

+0

列表實際上只是攜帶ID。謝謝 – acacia