Sha256: 02b747091a0b1b2fa44b3b20ae3ee5a8d8254ee4dd47bd8e656eb9286065c25d

Contents?: true

Size: 586 Bytes

Versions: 1

Compression:

Stored size: 586 Bytes

Contents

module Grape
  module Validations
    class MutualExclusionValidator < Validator
      attr_reader :params

      def validate!(params)
        @params = params
        if two_or_more_exclusive_params_are_present
          raise Grape::Exceptions::Validation, params: keys_in_common, message_key: :mutual_exclusion
        end
        params
      end

      private

      def two_or_more_exclusive_params_are_present
        keys_in_common.length > 1
      end

      def keys_in_common
        (attrs.map(&:to_s) & params.stringify_keys.keys).map(&:to_s)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
grape-0.9.0 lib/grape/validations/mutual_exclusion.rb