我正在嘗試制作一個 rake 任務以在 heroku 上使用調度程式運行它,但首先我在本地進行測驗,所以我有一種方法可以檢查這樣的投票狀態
def check_status
if Date.today.between?(self.start_date, self.expiration_date)
self.poll_active = true
else
self.poll_active = false
end
end
它作業得很好,但現在我想要這個確切的方法來運行它的任務。
我創建我的任務檔案
namespace :change_poll_status do
task :poll_status => :environment do
if Date.today.between?(Poll.start_date, Poll.expiration_date)
Poll.poll_active = true
puts "It works"
else
Poll.poll_active = false
puts "no"
end
end
end
但是當我跑步時rake change_poll_status:poll_status
什么都沒有發生,它只是跳過,就像沒有什么可以運行,沒有錯誤,什么都沒有。
uj5u.com熱心網友回復:
錯誤在這一行:
if Date.today.between?(Poll.start_date, Poll.expiration_date)
您正在嘗試將今天的日期與兩個類方法 start_date 和 expiration_date 進行比較。Poll 類中不存在這些方法。
要解決此問題,您需要首先檢索 Poll 類的實體,然后呼叫該實體上的方法。例如:
poll = Poll.first
if Date.today.between?(poll.start_date, poll.expiration_date)
poll.poll_active = true
puts "It works"
else
poll.poll_active = false
puts "no"
end
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/516973.html
