class Rosebud::Validations::TypeValidator

Public Instance Methods

validate_param(name, value, type) click to toggle source
# File lib/rosebud/validations/type_validator.rb, line 4
def validate_param(name, value, type)
  coerced_value = coerce_value(type, value)
  error!(:type, param: name) unless valid_type?(type, coerced_value)
end

Private Instance Methods

coerce_value(type, value) click to toggle source
# File lib/rosebud/validations/type_validator.rb, line 10
def coerce_value(type, value)
  coercer = Virtus::Attribute.build(type)
  coercer.coerce(value)
end
valid_type?(type, value) click to toggle source
# File lib/rosebud/validations/type_validator.rb, line 15
def valid_type?(type, value)
  return true if value.nil?
  if type == Virtus::Attribute::Boolean
    value.is_a?(TrueClass) || value.is_a?(FalseClass)
  elsif type == Rack::Multipart::UploadedFile
    value.key?(:tempfile)
  else
    value.is_a?(type)
  end
end