diff --git a/app/models/contact.rb b/app/models/contact.rb index 9f0a78f8d..b50428bb1 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -578,4 +578,9 @@ class Contact < ActiveRecord::Base log end + def remove_address + self.class.address_attribute_names.each do |attr_name| + self[attr_name.to_sym] = nil + end + end end diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index 76d6eb7b6..f78d94c31 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -648,6 +648,7 @@ class Epp::Domain < Domain oc.copy_from_id = c.id oc.generate_code oc.domain_transfer = true + oc.remove_address unless Contact.address_processing? oc.save!(validate: false) oc end diff --git a/spec/models/contact_spec.rb b/spec/models/contact_spec.rb index 5dd16b14a..3952a1d0e 100644 --- a/spec/models/contact_spec.rb +++ b/spec/models/contact_spec.rb @@ -448,4 +448,19 @@ RSpec.describe Contact, db: false do expect(contact.errors).to have_key(:country_code) end end + + describe '#remove_address' do + let(:contact) { described_class.new(city: 'test', + street: 'test', + zip: 'test', + country_code: 'test', + state: 'test') + } + subject(:address_removed) { contact.attributes.slice(*described_class.address_attribute_names).compact.empty? } + + it 'removes address attributes' do + contact.remove_address + expect(address_removed).to be_truthy + end + end end