簡體   English   中英

最后一個方法之后如何使用update_all方法?

[英]How to be with the update_all method after the last method?

如果編寫以下代碼:

User.last(5).update_all(smth: true)

然后,預期的錯誤將作為響應:

NoMethodError (undefined method `update_all' for #<Array:0x00007fd74b25a290>)

但是,如果我需要獲取最后N條記錄並更新所有記錄,該怎么辦?

我有一個列表( User.all )。 從此列表中,我無法觸摸前M個條目。 也就是說,我需要更新這些條目:

n = User.count - m
User.last(n).update_all(smth: true)

如果只想更新最后n條記錄,則可以使用帶有limit order

User.order(created_at: :desc).limit(n).update_all(smth: true)

但是,在您的特定情況下,即,如果您要更新除前m之外的所有記錄,則有一種更適合您的SQL offset合適方法:

User.order(created_at: :asc).offset(m).update_all(smth: true)

暫無
暫無

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

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