Ich möchte alle Datensätze abrufen, bei denen das Feld created_at kleiner als heute ist (ein Datum). Gibt es so etwas wie:
MyTable.find_by_created_at(< 2.days.ago)
ruby
activerecord
Sayuj
quelle
quelle
MyTable1.where(MyTable[:created_at] < Time.now)
ist es möglich?So erhalten Sie alle Datensätze
MyTable
, die bis vor 2 Tagen erstellt wurden:Beachten Sie, dass Sie auch für Datensätze mit Feldern mit Feldern in Zukunft in ähnlicher Weise aussehen kann, dh alle Datensätze zu bekommen
MyTable
mit einerevent_date
mindestens 2 Tage ab sofort:quelle
"created_at" BETWEEN $1 AND $2 [["created_at", "4713-01-01 BC"], ["created_at", "2020-03-31 21:43:28.113759"]]
Eine andere Möglichkeit besteht darin, einen Bereich in
MyModel
oder unterApplicationRecord
Verwendung der Arel- Benutzeroberfläche wie tokland zu erstellen, der in seiner Antwort wie folgt unterstützt wird :Beispiel für die Verwendung des Bereichs:
Überprüfen Sie für alle Prädikationen die Dokumentation oder den Quellcode . Dieser Bereich unterbricht die
where
Kette nicht. Dies bedeutet, dass Sie auch Folgendes tun können:quelle
Time.now bezieht sich auf jetzt oder genau diese Sekunde. Um also alle Benutzer vorher zu finden, verwenden Sie einfach
Dadurch werden alle Benutzer zuvor gefunden und zukünftige Benutzer oder Benutzer, die nach Time.now beitreten, ausgeschlossen
quelle