- Завершение операции в транзакции
ActiveRecord::Base.transaction
- загрузка данных в пакетах с использованием
find_each
- Загрузка только тех столбцов, которые вы хотите изменить, используя
select
Address.transaction do
Address.where.not(encrypted_address: [nil, '']).select(:address).find_each do |address|
address.update_attribute(:address, Faker::Address.street_address)
end
end
Если вам не нужно вызывать проверку или обратные вызовы, вы можете рассмотреть возможность использования update_column
over update_attribute
В идеале Rails не создан для обновления больших наборов данных. Вы должны рассмотреть некоторые родные утилиты базы данных.