2017-06-07 5 views
0

Ich habe eine App läuft auf Heroku und einmal am Tag läuft es taks Every_day. Task Scheduler funktioniert gut, aber es tut nichts zu meiner Datenbank. Ich habe auch versucht, es manuell auszuführen und es ist das gleiche Ergebnis. Ich denke, das Problem ist mit meinem Code und ich werde dankbar sein, wenn mir jemand sagen könnte, was falsch ist. Dieser Code der Aufgabe:Heroku/Rails: Taskplaner funktioniert, tut aber nichts

task :every_day => :environment do 
    unactive_auction = Auction.where(ended: false).where('created_at < ?', 14.days.ago) 
    unactive_auction.update_all(:ended => true) 
end 

Wenn ich es manuell ausführen ich diese:

, [2017-06-07T07:08:26.348223 #4] DEBUG -- : Auction Load (1.7ms) SELECT "auctions".* FROM "auctions" ORDER BY "auctions"."id" ASC LIMIT $1 [["LIMIT", 1000]] 
D, [2017-06-07T07:08:26.677182 #4] DEBUG -- : SQL (1.3ms) UPDATE "auctions" SET "ended" = 't' WHERE "auctions"."ended" = $1 AND (created_at < '2017-05-24 07:08:26.674476') [["ended", false]] 

Ich habe keine Ahnung, was ich falsch mache. Es sieht so aus als ob es funktioniert aber ... Aber es tut nichts.

+0

Was lässt Sie sagen, dass es nichts tut? Wie verifizierst du? und ist der "beendete" Boolesche? Versuchen Sie, das gleiche in Ihrer Konsole zu laufen –

Antwort

1

Sind Sie sicher, dass Objekte Ihre Abfrageparameter erfüllen? Run in den Schienen Konsole:

unactive_auction = Auction.where("ended is ? and created_at < ?", false, 14.days.ago) 

Und sehen, ob es irgendetwas gibt, bevor die Aufgabe ausgeführt wird.

+0

Sieht aus wie es war ein Problem mit dieser Linie. Ich habe "Ended Part" gelöscht und jetzt funktioniert es. Vielen Dank! – RIP