Ruby on rails 3 比较“订单”中的日期时,Rails忽略毫秒

Ruby on rails 3 比较“订单”中的日期时,Rails忽略毫秒,ruby-on-rails-3,postgresql,activerecord,Ruby On Rails 3,Postgresql,Activerecord,我有一个自己解决不了的问题,希望你能帮助我。 问题 目前,我正在尝试获取用户尚未阅读的帖子,换句话说,我想要关注Posts.updated_at>viewsed_Posts.last_viewsed_at的帖子。日期被直接插入数据库,问题在于MyActiveRecord查询 以下是我的疑问: 但这并不能很好地工作,似乎ActiveRecord忽略了毫秒,这大大改变了我的结果 我有一篇文章更新于2014-02-24 21:38:30.466789,同一篇文章最后一次被一位用户浏览于2014-02

我有一个自己解决不了的问题,希望你能帮助我。

问题 目前,我正在尝试获取用户尚未阅读的帖子,换句话说,我想要关注Posts.updated_at>viewsed_Posts.last_viewsed_at的帖子。日期被直接插入数据库,问题在于MyActiveRecord查询

以下是我的疑问:

但这并不能很好地工作,似乎ActiveRecord忽略了毫秒,这大大改变了我的结果

我有一篇文章更新于2014-02-24 21:38:30.466789,同一篇文章最后一次被一位用户浏览于2014-02-24 21:38:30.497867。正如你所看到的,这个用户在几秒钟后就已经看到了这篇文章,我们可以想象,根据我的查询,这个用户不会看到这篇文章,但是令人惊讶!此帖子作为查询结果之一出现

我只能想象ActiveRecord忽略了毫秒,或者有其他可能的原因?

可能的解决办法 我发现了,但这对我没有帮助,因为order不接受两个参数,我不知道如何在where子句中包含这段代码


我能做些什么来解决我的问题?

实际运行的SQL是什么?从Rails的日志中获取,或者在启用log_语句='all'后从PostgreSQL server错误日志中获取。posts.updated_at>viewsed_posts.last_viewsed_at不应该在WHERE子句中而不是ORDER BY中吗?@CraigRinger我将很快更新这个问题,谢谢你的帮助reply@muistooshort我想是的,但是…我的架构如何做到这一点?我已经试过很多方法把这句话放在哪里,但这总是给我一个错误。你能用这句话写一个where从句吗?你做了哪些尝试,犯了哪些错误?posts和viewed_posts表是什么样子的?
posts.joins(:viewed_posts).where(viewed_posts: 
    { person_id: current_user.id, person_type: current_user.class.name})
    .order('posts.updated_at > viewed_posts.last_viewed_at DESC')