diff --git a/app/models/releases/link.rb b/app/models/releases/link.rb index 766cb2efff2..6f639e5a7b2 100644 --- a/app/models/releases/link.rb +++ b/app/models/releases/link.rb @@ -6,7 +6,7 @@ module Releases belongs_to :release - validates :url, presence: true, url: true + validates :url, presence: true, url: true, uniqueness: { scope: :release } validates :name, presence: true, uniqueness: { scope: :release } scope :sorted, -> { order(created_at: :desc) } diff --git a/changelogs/unreleased/add-uniqueness-validation-to-url-column-in-releases-link-model.yml b/changelogs/unreleased/add-uniqueness-validation-to-url-column-in-releases-link-model.yml new file mode 100644 index 00000000000..7d767e220f7 --- /dev/null +++ b/changelogs/unreleased/add-uniqueness-validation-to-url-column-in-releases-link-model.yml @@ -0,0 +1,5 @@ +--- +title: Add uniqueness validation to url column in Releases::Link model +merge_request: 24223 +author: +type: other diff --git a/spec/models/releases/link_spec.rb b/spec/models/releases/link_spec.rb index e88c186cbb8..06ed1438688 100644 --- a/spec/models/releases/link_spec.rb +++ b/spec/models/releases/link_spec.rb @@ -31,6 +31,16 @@ describe Releases::Link do end.to raise_error(ActiveRecord::RecordInvalid) end end + + context 'when duplicate url is added to a release' do + let!(:link) { create(:release_link, url: 'http://gitlab.com', release: release) } + + it 'raises an error' do + expect do + create(:release_link, url: 'http://gitlab.com', release: release) + end.to raise_error(ActiveRecord::RecordInvalid) + end + end end describe '.sorted' do