簡體   English   中英

紅寶石遍歷SQL結果

[英]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.

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