diff --git a/app/jobs/migration/set_default_value_for_contact_name_job.rb b/app/jobs/migration/set_default_value_for_contact_name_job.rb new file mode 100644 index 000000000..e5505e8f4 --- /dev/null +++ b/app/jobs/migration/set_default_value_for_contact_name_job.rb @@ -0,0 +1,12 @@ +class Migration::SetDefaultValueForContactNameJob < ApplicationJob + queue_as :scheduled_jobs + + def perform(account) + account.contacts.each do |contact| + # Set default value for contact name if it is blank + # rubocop:disable Rails/SkipsModelValidations + contact.update_columns(name: '') if contact.name.blank? + # rubocop:enable Rails/SkipsModelValidations + end + end +end diff --git a/db/migrate/20230512040636_set_default_name_to_existing_contacts.rb b/db/migrate/20230512040636_set_default_name_to_existing_contacts.rb index 4569f99a6..1394bb794 100644 --- a/db/migrate/20230512040636_set_default_name_to_existing_contacts.rb +++ b/db/migrate/20230512040636_set_default_name_to_existing_contacts.rb @@ -1,13 +1,10 @@ class SetDefaultNameToExistingContacts < ActiveRecord::Migration[7.0] def change - Contact.where(name: nil).each do |contact| - contact.update(name: '') - end - end - - def down - Contact.where(name: '').each do |contact| - contact.update(name: nil) + ::Account.find_in_batches do |account_batch| + Rails.logger.info "Migrated till #{account_batch.first.id}\n" + account_batch.each do |account| + Migration::SetDefaultValueForContactNameJob.perform_later(account) + end end end end