Trilhos `where` por menos tempo que consultas
Trilhoswhere
O método pode levar um intervalo em um hash para gerar uma consulta que procurará um valor que esteja dentro do intervalo. Por exemplo:
User.where(cash_money: 10..1000)
#=> SELECT `users`.* FROM `users` WHERE (`users`.`cash_money` BETWEEN 10 AND 1000)
Isso também pode ser usado com registros de data e hora 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')
Eu descobri que você pode fazer um simples menor ou maior que com números usando a sintaxe de hash como esta
User.where(cash_money: 10..Float::INFINITY)
#=> SELECT `users`.* FROM `users` WHERE (`users`.`cash_money` >= 10)
e o mesmo pode ser feito com-Float::INFINITY
para menos de consultas.
Existe uma maneira de fazer isso com registros de data e hora para que eu possa obter uma consulta como a seguinte?
SELECT `users`.* FROM `users` WHERE (`users`.`last_deposit` >= '2014-05-19 14:42:36')
Não posso usarFloat::INFINITY
ouDate::Infinity
com um intervalo, pois ambos erro comArgumentError: bad value for range
.
User.where('`users`.`last_deposit` >= ?', 10.days.ago)
irá gerar o mesmo SQL, mas se isso puder ser feito com objetos que não sejam strings, eu gostaria de fazê-lo.
Resposta potencial (Meh)Isso é meio ruim, mas pode ser feito com intervalos usandoTime.at(0)
eTime.at(Float::MAX)
. Tenho a sensação de que eles podem resultar em consultas SQL igualmente ruins.