gpt4 book ai didi

ruby-on-rails - Rails will_paginate 和 ajax,在数据库表改变时分页

转载 作者:行者123 更新时间:2023-12-03 16:02:32 24 4
gpt4 key购买 nike

我正在尝试将 will_paginate 用于 Rails 3.2 应用程序,但我没有在任何地方看到任何关于有人在分页而数据库中的数据发生变化时会发生什么的引用。更具体地说,添加了新记录。

我可能在这里遗漏了一些东西,但如果我知道它是如何工作的,will_paginate 只会计算数据库中的记录。
假设我一次加载一个包含 5 条记录的页面,并希望它们按最新的顺序排列。
用户加载页面并获取显示在第 1 页的记录 6-10(当时的最新记录)。然后,有人将另一条记录插入表中,id=11。之后,第一个用户点击进入第 2 页,但现在第 2 页给出记录 2-6。所以用户在两个页面中都得到了 id=6。

这个问题听起来并没有那么糟糕,但如果你想使用 will_paginate 分页进行无限滚动,这真的很糟糕,如下所示:http://railscasts.com/episodes/114-endless-page

我想过添加第一页加载的时间戳并将其传递给连续的 ajax 调用以过滤最初存在的记录,以免获得重复。

有没有一些最佳实践方法来处理这个问题?

最佳答案

如果仅添加记录,则检查时间戳的解决方案有效。另一种方法是使用返回的最早记录的时间戳来获取下一组数据。

这样,如果记录被删除,则不会跳过任何记录。

使用返回的最旧记录的时间戳在查询时间上也是有优势的,因为数据库不需要计算出 100 条记录来获取第 101 条记录,它可以简单地获取比某个时间早的第一条记录(这要快得多)如果您的 created_at 列被索引 - 允许二进制搜索)。

关于ruby-on-rails - Rails will_paginate 和 ajax,在数据库表改变时分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11674686/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com