我看到了很多用于查找下一个/上一个记录的相同解决方案,但我有不同的情况。
在我的数据库中有一些帖子(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
找到第一个/下一个帖子?
答案 0 :(得分:1)
在找到“下一个”记录时,您是否还想考虑默认范围?
如果没有,请使用
Post.unscoped.where(...).first
如果是,您可以考虑更改默认范围:
default_scope :order => ['sticky DESC', 'created_at ASC']
总的来说,如果可能,应该使用默认范围。它们可能/将成为以后维护的噩梦。建议仅在需要时使用范围。