diff options
author | Kamil Trzciński <ayufan@ayufan.eu> | 2018-02-27 12:51:49 +0300 |
---|---|---|
committer | Kamil Trzciński <ayufan@ayufan.eu> | 2018-02-27 12:51:49 +0300 |
commit | 1e04603f9322125ae0d725e1bca6da76a1337729 (patch) | |
tree | 1890de8cfcddce7bc35437da644244557f9d16a3 /app | |
parent | 214e601a9f01b5ee525f0f3d3396ab6ff4961b07 (diff) | |
parent | f2695aa84b68cd905eff90c598e452cbf63d98ed (diff) |
Merge branch '43275-improve-variables-validation-message' into 'master'
Resolve "Improve Variables validation message"
Closes #43275
See merge request gitlab-org/gitlab-ce!17135
Diffstat (limited to 'app')
-rw-r--r-- | app/models/ci/group_variable.rb | 5 | ||||
-rw-r--r-- | app/models/ci/variable.rb | 5 | ||||
-rw-r--r-- | app/validators/variable_duplicates_validator.rb | 2 |
3 files changed, 10 insertions, 2 deletions
diff --git a/app/models/ci/group_variable.rb b/app/models/ci/group_variable.rb index afeae69ba39..1dd0e050ba9 100644 --- a/app/models/ci/group_variable.rb +++ b/app/models/ci/group_variable.rb @@ -6,7 +6,10 @@ module Ci belongs_to :group - validates :key, uniqueness: { scope: :group_id } + validates :key, uniqueness: { + scope: :group_id, + message: "(%{value}) has already been taken" + } scope :unprotected, -> { where(protected: false) } end diff --git a/app/models/ci/variable.rb b/app/models/ci/variable.rb index 67d3ec81b6f..7c71291de84 100644 --- a/app/models/ci/variable.rb +++ b/app/models/ci/variable.rb @@ -6,7 +6,10 @@ module Ci belongs_to :project - validates :key, uniqueness: { scope: [:project_id, :environment_scope] } + validates :key, uniqueness: { + scope: [:project_id, :environment_scope], + message: "(%{value}) has already been taken" + } scope :unprotected, -> { where(protected: false) } end diff --git a/app/validators/variable_duplicates_validator.rb b/app/validators/variable_duplicates_validator.rb index 4bfa3c45303..72660be6c43 100644 --- a/app/validators/variable_duplicates_validator.rb +++ b/app/validators/variable_duplicates_validator.rb @@ -5,6 +5,8 @@ # - Use `validates :xxx, uniqueness: { scope: :xxx_id }` in a child model class VariableDuplicatesValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) + return if record.errors.include?(:"#{attribute}.key") + if options[:scope] scoped = value.group_by do |variable| Array(options[:scope]).map { |attr| variable.send(attr) } # rubocop:disable GitlabSecurity/PublicSend |