Sha256: 57299b94af105c332ac1b5f87799ced6e1f1932842a61ab1299eccffe2318348

Contents?: true

Size: 565 Bytes

Versions: 1

Compression:

Stored size: 565 Bytes

Contents

module Grape
  module Validations
    class AtLeastOneOfValidator < Validator
      attr_reader :params

      def validate!(params)
        @params = params
        if no_exclusive_params_are_present
          raise Grape::Exceptions::Validation, params: attrs.map(&:to_s), message_key: :at_least_one
        end
        params
      end

      private

      def no_exclusive_params_are_present
        keys_in_common.length == 0
      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/at_least_one_of.rb