Rails `where` por menos tiempo que las consultas
Rieleswhere
El método puede tomar un rango en un hash para generar una consulta que buscará un valor que esté dentro del rango. Por ejemplo:
User.where(cash_money: 10..1000)
#=> SELECT `users`.* FROM `users` WHERE (`users`.`cash_money` BETWEEN 10 AND 1000)
Esto también se puede usar con marcas de tiempo como
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')
Descubrí que puedes hacer un simple menor o mayor que con números usando la sintaxis hash como esta
User.where(cash_money: 10..Float::INFINITY)
#=> SELECT `users`.* FROM `users` WHERE (`users`.`cash_money` >= 10)
y lo mismo se puede hacer con-Float::INFINITY
por menos de consultas.
¿Hay alguna manera de hacer esto con marcas de tiempo para que pueda obtener una consulta como la siguiente?
SELECT `users`.* FROM `users` WHERE (`users`.`last_deposit` >= '2014-05-19 14:42:36')
No puedo usarFloat::INFINITY
oDate::Infinity
con un rango ya que ambos error conArgumentError: bad value for range
.
User.where('`users`.`last_deposit` >= ?', 10.days.ago)
generará el mismo SQL, pero si esto se puede hacer con objetos que no sean cadenas, me gustaría hacerlo.
Respuesta potencial (Meh)Esto es un poco pésimo, pero podría hacerse con rangos usandoTime.at(0)
yTime.at(Float::MAX)
. Sin embargo, tengo la sensación de que esto podría dar lugar a consultas SQL igualmente pésimas.