Rails在“订单”中比较日期时忽略毫秒

时间:2014-02-24 23:04:20

标签: ruby-on-rails-3 postgresql activerecord

我遇到麻烦,我自己无法解决,希望你能帮助我。

问题

目前我正在尝试获取用户尚未阅读的帖子,换句话说,我希望帖子能够参与posts.updated_at > viewed_posts.last_viewed_at。日期已插入数据库中,问题出在我的ActiveRecord查询中。

以下是我的问题:

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')

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

我有一个帖子updated_at 2014-02-24 21:38:30.466789,同一帖子是last_viewed_at 2014-02-24 21:38:30.497867一个用户。正如你所看到的,这个用户已经看到了几毫秒后的帖子,我们可以想象用户根据我的查询不会看到这篇文章 - 但是很惊讶!此帖子显示为查询的一个结果!

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

可能的解决方案

我找到this answer,但这对我没有帮助,因为order不接受两个参数(我不知道如何在我的where中包含此代码条款)。

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

0 个答案:

没有答案