新手问题 [已解决] 如何得到查询记录的前一条或后一条数据?

ikebukuro · 2012年05月25日 · 最后由 ikebukuro 回复于 2012年05月25日 · 3980 次阅读

有这样的需求:

在查询数据列表中,用户可以自己对数据排序,比如把中间的某条数据向上移动一位或向下移动一位,并把这种操作结果保存到数据库中。

得到用户指定的那条数据后,还想得到那一条的前一条和后一条数据,当然是想更新相应字段,用 Rails 的Active Record Query方法如何做到呢?

看了下Active Record Query Interface http://guides.rubyonrails.org/active_record_querying.html

没找到类似previousnext的方法。

注:如果用 ID 去查,有相关记录被删除的情况,所以 ID+1、-1 的方案放弃。

ID>目前 id limit 1 呢

排序值大/小于当前值 limit 1

有个 Gem 叫什么来着,可以参考人家的里面的实现

#1 楼 @Tony 这样可以取得当前数据的下一条,那上一条呢? #2 楼 @Rei 回答了一楼,回二楼就知道做法了:P #3 楼 @huacnlee 这个范围太广了:D,那个 Gem 叫什么来着?

#4 楼 @ikebukuro ID < 目前 id limit 1

谢谢以上各位回复。此问题圆满结帖。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号