[英]ruby iterate through sql results
我需要遍歷使用sql找到的記錄並更新所有記錄。
我需要更新幾千條記錄,而且要求非常復雜,以至於我無法通過SQL搜索記錄。 下面的代碼有效,但是有沒有一種方法可以執行幾千條更新語句呢?
users = User.find_by_sql "select e.id from users e inner join accounts a on a.id = e.account_id where e.account_id not in (1955,3083, 3869)"
users.each do |user|
u = User.find(user.id)
if u
u.update_attribute(:last_name, 'X')
end
end
這將與您的代碼執行相同的操作,但是只有一個UPDATE
:
User.joins(:accounts)
.where("users.account_id NOT IN (?)", [1955, 3083, 3869])
.update_all(last_name: "X")
您可以在此處找到update_all
的文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.