ActiveRecord: milissegundos não são levados em conta quando se usa uma cláusula where

Eu estou trabalhando em um projeto com uma API rails e um cliente iOS, usando o campo updated_at como a referência para detectar modificações no servidor que aconteceu após o último pull do cliente.

O datetime updated_at tem uma precisão em milissegundos, o que significa que

Model.updated_at.to_f

retorna algo como "1368977381.063427". Isso é enviado para o cliente formatado como "2013-05-19T15: 29: 41.063427000Z".

O problema é que, quando eu obtenho essa data / hora de volta do cliente, analiso e consulta com ela, os milissegundos são perdidos.

last_update = DateTime.strptime("2013-05-19T15:29:41.063427000Z", "%Y-%m-%dT%H:%M:%S.%N%z")
Model.where("updated_at > ?", last_update)

é tão bom quanto fazer

last_update = DateTime.strptime("2013-05-19T15:29:41Z", "%Y-%m-%dT%H:%M:%S%z")
Model.where("updated_at > ?", last_update)

Como resultado, sempre obtenho pelo menos um resultado quando não deveria receber nenhum, porque os milissegundos são truncados.

Como posso levar isso em conta na minha consulta?

questionAnswers(2)

yourAnswerToTheQuestion