, : script:
begin
c_pool = ActiveRecord::Base.establish_connection
conn = c_pool.connection
result = conn.execute("SELECT count(*) from users WHERE created_at < '2018-03-12 08:37:46'", )
count = result.try(:[], 0).to_i
batch_size = 100
my_offset = 0
while (count > 0) do
users = User.where("created_at < ?", '2018-03-12 08:37:46').limit(batch_size).offset(my_offset)
break unless users.present?
users.each do |u|
u.password = u.old_password_field
u.save
count -= 1
end
my_offset += batch_size
end
rescue => e
Rails.logger.error "#{e.message}"
ensure
ActiveRecord::Base.clear_active_connections!
end
. , , .
script .