Ich habe eine Timer-Klasse in meiner Anwendung festgelegt, um 24 Stunden nach der Erstellung ablaufen.Wie ändere ich Attribute eines Modells nach einer festgelegten Zeit
Gibt es eine Möglichkeit, expire_if_running 24 Stunden nach dem Erstellungsdatum auszuführen, oder muss ich jede Minute einen Cron-Job ausführen?
class Timer < ApplicationRecord
enum status: {
running: 1, # the default
expired: 2 # timed out
finished: 3 # completed
}
# if the Timer isn't finished, expire it
def expire_if_running
self.status = "expired" if self.running?
end
end
Bitte geben Sie Beispielcode oder ein Zitat für Ihre Antwort. Ich habe ActiveJob noch nie zuvor verwendet und ich habe das schwache Gefühl, dass dies der Fall ist, der es erfordert.
Wir verwenden derzeit Heroku in der Produktion, aber wir planen, irgendwann zu unserer eigenen Infrastruktur zu wechseln. Hat ActiveJob keine eigene Syntax wie ActiveRecord mit ORM. – amingilani
Nach dem Lesen der Dokumente für ActiveJob scheint es, dass eine Aufgabe zu einem bestimmten Zeitpunkt in der Zukunft ausgeführt wird. Für die Funktion "Cron-Job" können Sie den Heroku-Scheduler verwenden. Schreiben Sie eine Rake-Aufgabe, die den Status aller abgelaufenen Jobs aktualisiert. –