ActiveRecord: los milisegundos no se tienen en cuenta al utilizar una cláusula where
Estoy trabajando en un proyecto con una api de rails y un cliente de iOS, utilizando el campo updated_at como referencia para detectar modificaciones en el servidor que ocurrieron después de la última extracción del cliente.
La fecha y hora updated_at tiene una precisión en milisegundos, lo que significa que
Model.updated_at.to_f
devuelve algo así como "1368977381.063427". Esto se envía al cliente con el formato "2013-05-19T15: 29: 41.063427000Z".
El problema es que, cuando recupero esa fecha y hora del cliente, la analizo y pregunto, los milisegundos se pierden.
last_update = DateTime.strptime("2013-05-19T15:29:41.063427000Z", "%Y-%m-%dT%H:%M:%S.%N%z")
Model.where("updated_at > ?", last_update)
es tan bueno como hacer
last_update = DateTime.strptime("2013-05-19T15:29:41Z", "%Y-%m-%dT%H:%M:%S%z")
Model.where("updated_at > ?", last_update)
Como resultado, siempre obtengo al menos un resultado cuando no debería obtener ninguno, porque los milisegundos están truncados.
¿Cómo puedo tenerlos en cuenta en mi consulta?