rails next / prev记录

时间:2012-06-27 10:14:16

标签: ruby-on-rails ruby

我看到了很多用于查找下一个/上一个记录的相同解决方案,但我有不同的情况。

在我的数据库中有一些帖子(6,5,4,3,2,1),他们有default_scope个帖子:default_scope :order => 'sticky DESC' 如果4的帖子会被粘住,那么它将是第一名(4,6,5,3,2,1 ......)

如果我要搜索下一篇文章:record.where('created_at > ?', @post.created_at).first,则为3,而不是nil,因为首先按created_at搜索,然后按{{1}排序列。

如何使用此sticky找到第一个/下一个帖子?

1 个答案:

答案 0 :(得分:1)

在找到“下一个”记录时,您是否还想考虑默认范围?

如果没有,请使用

Post.unscoped.where(...).first

如果是,您可以考虑更改默认范围:

default_scope :order => ['sticky DESC', 'created_at ASC']

总的来说,如果可能,应该使用默认范围。它们可能/将成为以后维护的噩梦。建议仅在需要时使用范围。