Ruby on rails rails下一个/上一个记录
我看到了很多查找下一个/以前的记录的相同解决方案,但我有一个不同的案例 在我的数据库中有一些帖子(6、5、4、3、2、1),它们具有粘贴帖子的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
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']
一般来说,如果可能的话,应该防止使用默认作用域。它们可能/将成为以后维护的噩梦。建议仅在需要时使用作用域。示例