Rails "wo" für weniger Zeit als Abfragen
Schienen'where
Methode kann einen Bereich in einem Hash verwenden, um eine Abfrage zu generieren, die nach einem Wert sucht, der innerhalb des Bereichs liegt. Zum Beispiel:
User.where(cash_money: 10..1000)
#=> SELECT `users`.* FROM `users` WHERE (`users`.`cash_money` BETWEEN 10 AND 1000)
Dies kann auch mit Zeitstempeln wie verwendet werden
User.where(last_deposit: 10.days.ago..1000.days.ago)
#=> SELECT `users`.* FROM `users` WHERE (`users`.`last_deposit` BETWEEN '2014-05-19 14:42:36' AND '2011-09-02 14:42:36')
Ich habe herausgefunden, dass Sie mit der Hash-Syntax wie dieser eine einfache Operation ausführen können, die kleiner oder größer ist als Zahlen
User.where(cash_money: 10..Float::INFINITY)
#=> SELECT `users`.* FROM `users` WHERE (`users`.`cash_money` >= 10)
und das gleiche kann mit getan werden-Float::INFINITY
für weniger als Abfragen.
Gibt es eine Möglichkeit, dies mit Zeitstempeln zu tun, damit ich eine Abfrage wie die folgende erhalten kann?
SELECT `users`.* FROM `users` WHERE (`users`.`last_deposit` >= '2014-05-19 14:42:36')
Ich kann nicht benutzenFloat::INFINITY
oderDate::Infinity
mit einem Bereich, da beide Fehler mitArgumentError: bad value for range
.
User.where('`users`.`last_deposit` >= ?', 10.days.ago)
wird die gleiche SQL generieren, aber wenn dies mit anderen Objekten als Zeichenfolgen durchgeführt werden kann, würde ich dies gerne tun.
Mögliche (Meh) AntwortDas ist ein bisschen mies, aber es könnte mit Bereichen gemacht werden, die verwendenTime.at(0)
undTime.at(Float::MAX)
. Ich habe das Gefühl, dass dies zu ebenso miesen SQL-Abfragen führen könnte.