mysql - 对打乱的 ActiveRecord 查询进行分页

标签 mysql ruby-on-rails ruby-on-rails-3 pagination kaminari

我正在尝试对一个打乱的 ActiveRecord 查询进行分页。使用 Kaminari gem 执行此操作的语法是:

@users = Kaminari.paginate_array(User.all.shuffle).page(params[:page]).per(20)

问题在于 User.all 在每次分页请求时都会重新排列,导致调用重复的记录。有什么办法可以防止这种重复?

最佳答案

您需要在查询之间为 rand 传递种子

params[:seed] ||= Random.new_seed
srand params[:seed].to_i
@users = Kaminari.paginate_array(User.all.shuffle).page(params[:page]).per(20)

并在 View 中将 params[:seed] 添加到页面的所有 kaminari 链接

关于mysql - 对打乱的 ActiveRecord 查询进行分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9967100/

相关文章:

PHP MySQL 记分牌,带有个人资料页面的链接

ruby-on-rails - :remote => true not working when a file uploader is used in form

javascript - jQuery 或 Javascript 自动格式化电话掩码

ruby-on-rails-3 - redirect_to 外部 url 传递参数

sql - ActiveRecord - 从每个组中选择第一条记录

mysql - 使 mysql 查询更快,或提出替代方案

php - SQLSTATE[23000] 完整性约束冲突 : 1452 in a many-to-many relationship in laravel 5. 3

ruby-on-rails - 如何为 Rails View 返回一个字符串

html - 你如何创建一个 robots.txt 文件来阻止除根之外的所有内容

mysql - 将两个查询的结果合并为一个