Module: Eipiai::Validator

Included in:
SequelValidator
Defined in:
lib/eipiai/validators/base.rb

Overview

Validator

default module used for validation and error handling. Any validator should always inherit from this validator.

Constant Summary collapse

NotImplementedError =
Class.new(StandardError)

Instance Method Summary collapse

Instance Method Details

#add_error(error) ⇒ false

add_error

given an object, the object is added to the set of errors.

The method always returns ‘false`. This can be used to easily check for errors and add an error message in one go:

uid.present? || add_error(:uid_missing)

The above example will return true if the uid exists, or add the error and return false to indicate the validation check failed.

Examples:

item = Item.new.extend(ItemValidator)
item.add_error(:hello_world) # => false
item.errors.to_a # => [:hello_world]

Parameters:

  • error (Object)

    object to add to the errors set

Returns:

  • (false)


90
91
92
93
# File 'lib/eipiai/validators/base.rb', line 90

def add_error(error)
  errors << error
  false
end

#errorsSet

errors

Set of errors filled during validation. To set errors, see ‘#add_error`.

Examples:

item = Item.new.extend(ItemValidator)
item.valid?
item.errors.to_a # => [:missing_uid]

Returns:

  • (Set)

    set of errors



66
67
68
# File 'lib/eipiai/validators/base.rb', line 66

def errors
  @errors ||= Set.new
end

#invalid?true, false

invalid?

Returns:

  • (true, false)

    opposite return value of #valid?

See Also:



33
34
35
# File 'lib/eipiai/validators/base.rb', line 33

def invalid?
  !valid?
end

#valid?true, false

valid?

runs validators and returns ‘true` if no validations failed, otherwise returns `false`.

Examples:

successful validation

Item.new(uid: 'valid').extend(ItemValidator).valid? # => true

failed validation

Item.new.extend(ItemValidator).valid? # => false

Returns:

  • (true, false)

    status of validators



24
25
26
# File 'lib/eipiai/validators/base.rb', line 24

def valid?
  validate
end

#validatevoid

This method returns an undefined value.

validate

This method needs to be implemented in any validators that include this base validator.

If the validator does not define this method, a ‘NotImplementedError` error is raised.

Examples:

return NotImplementedError

Item.new.extend(InvalidValidator).validate
  # => raise Eipiai::Validator::NotImplementedError, "#validate required"

Raises:



51
52
53
# File 'lib/eipiai/validators/base.rb', line 51

def validate
  raise NotImplementedError, '#validate required'
end