Class: Treaty::Entity::Attribute::Option::Validators::InclusionValidator

Inherits:
Base
  • Object
show all
Defined in:
lib/treaty/entity/attribute/option/validators/inclusion_validator.rb

Overview

Validates that attribute value is included in allowed set.

Usage Examples

Simple mode:

string :provider, in: %w[twitter linkedin github]

Advanced mode:

string :provider, inclusion: { in: %w[twitter linkedin github], message: "Invalid provider" }

Advanced Mode

Uses :in as the value key (instead of default :is). Schema format: { in: [...], message: nil }

Instance Method Summary collapse

Methods inherited from Base

#initialize, #target_name, #transform_value, #transforms_name?

Constructor Details

This class inherits a constructor from Treaty::Entity::Attribute::Option::Base

Instance Method Details

#validate_schema!void

This method returns an undefined value.

Validates that allowed values are provided as non-empty array

Raises:



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/treaty/entity/attribute/option/validators/inclusion_validator.rb', line 27

def validate_schema!
  allowed_values = option_value

  return if allowed_values.is_a?(Array) && !allowed_values.empty?

  raise Treaty::Exceptions::Validation,
        I18n.t(
          "treaty.attributes.validators.inclusion.invalid_schema",
          attribute: @attribute_name
        )
end

#validate_value!(value) ⇒ void

This method returns an undefined value.

Validates that value is included in allowed set Skips validation for nil values (handled by RequiredValidator)

Parameters:

  • value (Object)

    The value to validate

Raises:



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/treaty/entity/attribute/option/validators/inclusion_validator.rb', line 45

def validate_value!(value)
  return if value.nil? # Inclusion validation doesn't check for nil, required does.

  allowed_values = option_value

  return if allowed_values.include?(value)

  attributes = {
    attribute: @attribute_name,
    value:,
    allowed_values:
  }

  message = resolve_custom_message(**attributes) || default_message(**attributes)

  raise Treaty::Exceptions::Validation, message
end