我遇到麻烦,我自己无法解决,希望你能帮助我。
目前我正在尝试获取用户尚未阅读的帖子,换句话说,我希望帖子能够参与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
中包含此代码条款)。
我可以做些什么来解决我的问题?