0

表中大约有 10,000-20,000 个对象。我有大约 1000 个 id 条目,您想更改一个值。如何正确执行此操作?我不想使用每一个将是 1000 次 INSERT。我认为这是不正确的。

PS这是一个正常的变种?

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
4

1 回答 1

1

你可以看看这个答案,基本上你应该使用update_all,它为一个表的所有记录构造单个更新查询。如果您只需要更新某些记录,您可以在更新之前使用where并链接它,例如:

Book.where('title LIKE ?', '%Rails%').update_all(author: 'David')

希望能帮助到你。

于 2014-08-24T16:21:45.887 回答