diff options
Diffstat (limited to 'lib/gitlab/config/entry/validators.rb')
-rw-r--r-- | lib/gitlab/config/entry/validators.rb | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/gitlab/config/entry/validators.rb b/lib/gitlab/config/entry/validators.rb index 28cfb6d8fee..87b7cab3f6d 100644 --- a/lib/gitlab/config/entry/validators.rb +++ b/lib/gitlab/config/entry/validators.rb @@ -40,6 +40,17 @@ module Gitlab end end + class OnlyOneOfKeysValidator < ActiveModel::EachValidator + def validate_each(record, attribute, value) + present_keys = value.try(:keys).to_a + + unless options[:in].one? { |key| present_keys.include?(key) } + record.errors.add(attribute, "must use exactly one of these keys: " + + options[:in].join(', ')) + end + end + end + class MutuallyExclusiveKeysValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) mutually_exclusive_keys = value.try(:keys).to_a & options[:in] |