diff --git a/app/models/aspect_membership.rb b/app/models/aspect_membership.rb index 18c5869bbe2827835d41b35e2373b446c241a619..87bc6c57451fc25efb88e7e52112964fead8c43a 100644 --- a/app/models/aspect_membership.rb +++ b/app/models/aspect_membership.rb @@ -11,9 +11,7 @@ class AspectMembership < ApplicationRecord has_one :person, :through => :contact before_destroy do - if self.contact && self.contact.aspects.size == 1 - self.user.disconnect(self.contact) - end + user&.disconnect(contact) if contact&.aspects&.size == 1 true end diff --git a/spec/models/aspect_membership_spec.rb b/spec/models/aspect_membership_spec.rb index d9585c5541008c79cf5620ea90d43e83f22503b0..d8f1de0fe1ad59c6cafb3a9b24aa00fc91e07ef0 100644 --- a/spec/models/aspect_membership_spec.rb +++ b/spec/models/aspect_membership_spec.rb @@ -26,5 +26,13 @@ describe AspectMembership, :type => :model do alice.add_contact_to_aspect(contact, aspect) aspect_membership.destroy end + + it "doesn't fail destruction if the user entry was deleted in prior" do + aspect_membership.user.delete + id = aspect_membership.id + + expect { AspectMembership.find(id).destroy }.not_to raise_error + expect(AspectMembership.where(id: id)).not_to exist + end end end