From 614d21dbca0ce34ddee76d10ba5a76468d95d133 Mon Sep 17 00:00:00 2001 From: Morgan Roderick Date: Thu, 16 Jul 2026 10:59:12 +0200 Subject: [PATCH] Add uniqueness validation for contact email scoped to sponsor --- app/models/contact.rb | 1 + spec/models/contact_spec.rb | 14 ++++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 spec/models/contact_spec.rb diff --git a/app/models/contact.rb b/app/models/contact.rb index 33bf5d919..dad2d8dfc 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -2,6 +2,7 @@ class Contact < ApplicationRecord belongs_to :sponsor, optional: true validates :name, :surname, :email, presence: true + validates :email, uniqueness: { scope: :sponsor_id } before_create :set_token diff --git a/spec/models/contact_spec.rb b/spec/models/contact_spec.rb new file mode 100644 index 000000000..037e77f79 --- /dev/null +++ b/spec/models/contact_spec.rb @@ -0,0 +1,14 @@ +RSpec.describe Contact do + subject(:contact) { Fabricate.build(:contact) } + + context 'validations' do + it { is_expected.to validate_presence_of(:name) } + it { is_expected.to validate_presence_of(:surname) } + it { is_expected.to validate_presence_of(:email) } + + it do + Fabricate(:contact) + is_expected.to validate_uniqueness_of(:email).scoped_to(:sponsor_id) + end + end +end