Ruby on rails rails下一个/上一个记录

Ruby on rails rails下一个/上一个记录,ruby-on-rails,ruby,Ruby On Rails,Ruby,我看到了很多查找下一个/以前的记录的相同解决方案,但我有一个不同的案例 在我的数据库中有一些帖子(6、5、4、3、2、1),它们具有粘贴帖子的default\u范围:default\u范围:order=>“sticky DESC” 如果4的帖子被粘贴,它将位于第一位(4,6,5,3,2,1…) 如果我像这样搜索下一篇帖子:record.where('created_at>?“,@post.created_at.)。首先,它将是3,而不是nil,因为它首先按created_at列搜索,然后按sti

我看到了很多查找下一个/以前的记录的相同解决方案,但我有一个不同的案例

在我的数据库中有一些帖子(6、5、4、3、2、1),它们具有粘贴帖子的
default\u范围
default\u范围:order=>“sticky DESC”
如果4的帖子被粘贴,它将位于第一位(4,6,5,3,2,1…)

如果我像这样搜索下一篇帖子:
record.where('created_at>?“,@post.created_at.)。首先
,它将是3,而不是
nil
,因为它首先按
created_at
列搜索,然后按
sticky
列排序


如何使用此
默认范围查找第一篇/下一篇文章?

在查找“下一篇”记录时,是否仍要考虑默认范围

如果没有,请使用

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

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

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

一般来说,如果可能的话,应该防止使用默认作用域。它们可能/将成为以后维护的噩梦。建议仅在需要时使用作用域。

在查找“下一个”记录时,是否仍要考虑默认作用域

如果没有,请使用

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

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

default_scope :order => ['sticky DESC', 'created_at ASC']
一般来说,如果可能的话,应该防止使用默认作用域。它们可能/将成为以后维护的噩梦。建议仅在需要时使用作用域。

示例