Class: TypedEAV::Field::ValidatedString
- Inherits:
-
Base
- Object
- ActiveRecord::Base
- ApplicationRecord
- Base
- TypedEAV::Field::ValidatedString
- Defined in:
- app/models/typed_eav/field/validated_string.rb
Overview
Intermediate STI base for string-valued field families that share a ‘min_length` / `max_length` / `pattern` validation surface.
Leaves: ‘Field::Text`, `Field::Email`, `Field::Url`.
Hoists the ‘string_value` storage declaration, the `store_accessor :options, :min_length, :max_length, :pattern` line, the `min_length` / `max_length` numericality validators, the `max_gte_min_length` guard, the `validate_pattern_syntax` guard, and the protected `validate_length` / `validate_pattern` helpers — all previously duplicated across Text/Email/Url with one drift gap (`max_gte_min_length` was only on Text).
Default ‘validate_typed_value` runs `validate_length` plus `validate_pattern if pattern.present?`. Leaves override and call `super` to layer on their format-specific check (Email’s ‘EMAIL_FORMAT`, Url’s ‘URL_FORMAT`).
Public extension point: external authors can subclass this directly to inherit the full min/max/pattern surface (see README §“Custom field types”). STI dispatch is unaffected — leaves still store their own class names in the ‘type` column.
Constant Summary
Constants inherited from Base
Constants included from TypedStorage
TypedStorage::DEFAULT_OPERATORS_BY_COLUMN, TypedStorage::FALLBACK_OPERATORS
Instance Method Summary collapse
Methods inherited from Base
#allowed_option_values, #array_field?, #backfill_default!, #cast, #clear_option_cache!, #default_value, #default_value=, export_schema, #field_type_name, import_schema, #insert_at, #move_higher, #move_lower, #move_to_bottom, #move_to_top, #optionable?
Methods included from TypedStorage
#after_snapshot, #apply_default, #before_snapshot, #read_value, #value_changed?, #write_value
Instance Method Details
#validate_typed_value(record, val) ⇒ Object
39 40 41 42 |
# File 'app/models/typed_eav/field/validated_string.rb', line 39 def validate_typed_value(record, val) validate_length(record, val) validate_pattern(record, val) if pattern.present? end |