summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/models/ci/pipeline_schedule.rb6
-rw-r--r--app/validators/uniqueness_of_in_memory_validator.rb37
2 files changed, 1 insertions, 42 deletions
diff --git a/app/models/ci/pipeline_schedule.rb b/app/models/ci/pipeline_schedule.rb
index ad9f8b89924..e4ae1b35f66 100644
--- a/app/models/ci/pipeline_schedule.rb
+++ b/app/models/ci/pipeline_schedule.rb
@@ -15,11 +15,7 @@ module Ci
validates :cron_timezone, cron_timezone: true, presence: { unless: :importing? }
validates :ref, presence: { unless: :importing? }
validates :description, presence: true
- validates :variables, uniqueness_of_in_memory: {
- :collection => :variables,
- :attrs => [:pipeline_schedule_id, :key],
- :message => ['variables.key', 'keys are duplicated']
- }
+ validates :variables, variable_duplicates: true
before_save :set_next_run_at
diff --git a/app/validators/uniqueness_of_in_memory_validator.rb b/app/validators/uniqueness_of_in_memory_validator.rb
deleted file mode 100644
index 84e88b2eb76..00000000000
--- a/app/validators/uniqueness_of_in_memory_validator.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-# UniquenessOfInMemoryValidator
-#
-# This validtor is designed for especially the following condition
-# - Use `accepts_nested_attributes_for :xxx` in a parent model
-# - Use `validates :xxx, uniqueness: { scope: :xxx_id }` in a child model
-#
-# Inspired by https://stackoverflow.com/a/2883129/2522666
-module ActiveRecord
- class Base
- # Validate that the the objects in +collection+ are unique
- # when compared against all their non-blank +attrs+. If not
- # add +message+ to the base errors.
- def validate_uniqueness_of_in_memory(collection, attrs, message)
- hashes = collection.inject({}) do |hash, record|
- key = attrs.map { |a| record.send(a).to_s }.join
- if key.blank? || record.marked_for_destruction?
- key = record.object_id
- end
- hash[key] = record unless hash[key]
- hash
- end
-
- if collection.length > hashes.length
- self.errors.add(*message)
- end
- end
- end
-end
-
-class UniquenessOfInMemoryValidator < ActiveModel::Validator
- def validate(record)
- record.validate_uniqueness_of_in_memory(
- record.public_send(options[:collection]),
- options[:attrs],
- options[:message])
- end
-end