Class: Ukiryu::Validation::RequiredConstraint

Inherits:
Constraint
  • Object
show all
Defined in:
lib/ukiryu/validation/constraints.rb

Overview

Validates that a value is present (not nil or empty)

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Constraint

#applies_to?

Constructor Details

#initialize(attribute_name, min: 1) ⇒ RequiredConstraint

Returns a new instance of RequiredConstraint.

Parameters:

  • attribute_name (String, Symbol)

    the attribute name

  • min (Integer) (defaults to: 1)

    minimum cardinality (default: 1)



40
41
42
43
# File 'lib/ukiryu/validation/constraints.rb', line 40

def initialize(attribute_name, min: 1)
  @attribute_name = attribute_name
  @min = min
end

Instance Attribute Details

#attribute_nameObject (readonly)

The name of the attribute being validated



34
35
36
# File 'lib/ukiryu/validation/constraints.rb', line 34

def attribute_name
  @attribute_name
end

#minObject (readonly)

The minimum required cardinality



36
37
38
# File 'lib/ukiryu/validation/constraints.rb', line 36

def min
  @min
end

Instance Method Details

#validate(value, _context = {}) ⇒ Object

Raises:

  • (ValidationError)

    if value is nil or empty when required



46
47
48
49
50
51
52
53
54
# File 'lib/ukiryu/validation/constraints.rb', line 46

def validate(value, _context = {})
  return if @min.zero?

  is_empty = value.nil? || (value.respond_to?(:empty?) && value.empty?)
  return unless is_empty

  raise ValidationIssue.new(@attribute_name, :required,
                            "Attribute #{@attribute_name} is required but missing")
end