在表格中约10,000-20,000个对象。我有大约1000个id条目,您想要更改一个值。怎么做到这一点?我不想每次使用1000次INSERT。我认为这不正确。
P.S。这是一个正常的变体吗?
accounts_closes = Account.where(:alfa_flag => false).pluck(:id)
Account.transaction do
accounts_closes.each do |account_id|
Account.connection.execute 'UPDATE accounts SET open = false WHERE id = ' + account_id + ';'
end
end
答案 0 :(得分:1)
您可以查看此answer,基本上您应该使用update_all,它为一个表的所有记录构建单个更新查询。如果您只需更新某些记录,则可以在更新前使用 where 并将其链接起来,例如:
Book.where('title LIKE ?', '%Rails%').update_all(author: 'David')
希望它有所帮助。