簡體   English   中英

will_paginate具有特定頁面的批量操作不起作用

[英]will_paginate mass operations with specific page don't work

Rails 4.2.5和will_paginate 3.1.0。

我被困了一段時間無法使用will_paginate進行大規模操作(例如update_all ),並且在調查時發現了一些奇怪的行為。 有人可以解釋其背后的原因嗎?

假設我的數據庫中有22位用戶,並且per_page = 10

User.all.page(3)將返回正確的用戶(用戶21和用戶22),但是:

User.all.page(3).count # => 22

User.all.offset(2 * User.per_page).limit(User.per_page).count # => 2

我正在處理的特定問題是,如果我做這樣的事情:

User.all.page(3).update_all(flagged: true)

我得到第一頁更新(用戶1-10),而不是第三頁(用戶21-22)。

有沒有一種方法可以在控制器內使用will_paginate page方法來僅操縱特定頁面內的記錄?


更新:

有趣的是,即使.offset().limit()大規模更新仍然無法工作,我也得到了相同的結果: 第一頁被更新,而不是最后一個(用戶1-10,而不是21-22 )。

所以當

User.all.offset(2 * User.per_page).limit(User.per_page).count # => 2

User.all.offset(2 * User.per_page).limit(User.per_page).update_all(flagged: true)仍會更新前10個用戶,而不是最后2個。

到目前為止,我User.all.page(3).each { |user| user.update(flagged: true) }的唯一方法是執行User.all.page(3).each { |user| user.update(flagged: true) } User.all.page(3).each { |user| user.update(flagged: true) }效果很好,但效果似乎很差。

嘗試將.per_page(10)添加到活動記錄查詢中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM