Sha256: 95713945617eb49442d95007d4d3b603f773a524e742128e0c18a79daa48b611

Contents?: true

Size: 825 Bytes

Versions: 3

Compression:

Stored size: 825 Bytes

Contents

module ForemanDocker
  module ParameterValidators
    extend ActiveSupport::Concern

    included do
      validate :validate_unique_parameter_keys
    end

    def validate_unique_parameter_keys
      parameters_symbol = [:environment_variables, :exposed_ports, :dns]
      parameters_symbol.each do |param_symbol|
        keys  = []
        errors = false

        self.public_send(param_symbol).each do |param|
          errors = duplicate_key?(keys, param)
        end

        self.errors.add(param_symbol, _('Please ensure the following parameters are unique')) if errors
      end
    end

    def duplicate_key?(keys, param)
      if keys.include?(param.key)
        param.errors.add(:key, _('has already been taken'))
        return true
      else
        keys << param.key
      end

      false
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
foreman_docker-5.0.0 app/models/concerns/foreman_docker/parameter_validators.rb
foreman_docker-4.1.1 app/models/concerns/foreman_docker/parameter_validators.rb
foreman_docker-4.1.0 app/models/concerns/foreman_docker/parameter_validators.rb