1

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

在我的数据库中有一些帖子 (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然后按sticky列排序。

我怎样才能找到第一个/下一个帖子default_scope

4

1 回答 1

1

查找“下一条”记录时是否仍要考虑默认范围?

如果没有,请使用

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

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

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

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

于 2012-06-27T13:24:38.623 回答