diff --git a/app/jobs/regenerate_registrar_whoises_job.rb b/app/jobs/regenerate_registrar_whoises_job.rb new file mode 100644 index 000000000..10e13a038 --- /dev/null +++ b/app/jobs/regenerate_registrar_whoises_job.rb @@ -0,0 +1,10 @@ +class RegenerateRegistrarWhoisesJob < Que::Job + def run(registrar_id) + # no return as we want restart job if fails + registrar = Registrar.find(registrar_id) + + registrar.whois_records.select(:id).find_in_batches(batch_size: 20) do |group| + RegenerateWhoisRecordJob.enqueue group.map(&:id) + end + end +end \ No newline at end of file diff --git a/app/jobs/regenerate_whois_record_job.rb b/app/jobs/regenerate_whois_record_job.rb new file mode 100644 index 000000000..6d79e2ea5 --- /dev/null +++ b/app/jobs/regenerate_whois_record_job.rb @@ -0,0 +1,10 @@ +class RegenerateWhoisRecordJob < Que::Job + def run(ids) + ids.each do |id| + record = WhoisRecord.find_by(id: id) + return unless record + + record.save + end + end +end \ No newline at end of file diff --git a/app/models/registrar.rb b/app/models/registrar.rb index 5afaad52e..003956f88 100644 --- a/app/models/registrar.rb +++ b/app/models/registrar.rb @@ -51,10 +51,10 @@ class Registrar < ActiveRecord::Base WHOIS_TRIGGERS = %w(name email phone street city state zip) - after_save :update_whois_records + after_commit :update_whois_records def update_whois_records return true unless changed? && (changes.keys & WHOIS_TRIGGERS).present? - whois_records.map(&:save) # slow currently + RegenerateRegistrarWhoisesJob.enqueue id end after_create :create_cash_account