class Grape::Validations::DefaultValidator

Public Class Methods

new(attrs, options, required, scope, opts = {}) click to toggle source
Calls superclass method Grape::Validations::Base.new
# File lib/grape/validations/validators/default.rb, line 4
def initialize(attrs, options, required, scope, opts = {})
  @default = options
  super
end

Public Instance Methods

validate!(params) click to toggle source
# File lib/grape/validations/validators/default.rb, line 20
def validate!(params)
  attrs = AttributesIterator.new(self, @scope, params)
  attrs.each do |resource_params, attr_name|
    if resource_params.is_a?(Hash) && resource_params[attr_name].nil?
      validate_param!(attr_name, resource_params)
    end
  end
end
validate_param!(attr_name, params) click to toggle source
# File lib/grape/validations/validators/default.rb, line 9
def validate_param!(attr_name, params)
  return if params.key? attr_name
  params[attr_name] = if @default.is_a? Proc
                        @default.call
                      elsif @default.frozen? || !duplicatable?(@default)
                        @default
                      else
                        duplicate(@default)
                      end
end

Private Instance Methods

duplicatable?(obj) click to toggle source

return true if we might be able to dup this object

# File lib/grape/validations/validators/default.rb, line 32
def duplicatable?(obj)
  !obj.nil? &&
    obj != true &&
    obj != false &&
    !obj.is_a?(Symbol) &&
    !obj.is_a?(Numeric)
end
duplicate(obj) click to toggle source

make a best effort to dup the object

# File lib/grape/validations/validators/default.rb, line 41
def duplicate(obj)
  obj.dup
rescue TypeError
  obj
end