如何在ActiveRecord中的id之前检索k个先前的帖子

时间:2015-05-31 03:57:59

标签: ruby-on-rails activerecord

我正在尝试反向无限滚动,我最初显示最近的20个帖子。当用户向上滚动时,我想检索(在Rails中)接下来的20个帖子等等......

以下代码几乎可以实现,但由于“订单”,它以相反的顺序给出了帖子列表:

room.posts.where('id < ?', id).order('created_at desc').limit(20)

我希望这些帖子按升序排列。我可以在检索后反转数组,但这似乎是浪费计算。

另一方面,如果我退出“订单”(如下所示),这是完全错误的,因为那时我会得到20个最早的帖子而不是最近的20个。

room.posts.where('id < ?', id).limit(20)

1 个答案:

答案 0 :(得分:1)

我希望我能正确理解你的问题。怎么样:

room.posts.where('id < ?', id).order('created_at desc').limit(20).reverse

最后的反向只是反转查询中结果的顺序。如果这是您要避免的,我不确定您是怎么做的。这似乎是一种非常密集的方式来完成它。