Class: ActiveModel::EachValidator
- Defined in:
- activemodel/lib/active_model/validator.rb
Overview
EachValidator
is a validator which iterates through the attributes given in the options hash invoking the validate_each
method passing in the record, attribute and value.
All Active Model validations are built on top of this validator.
Direct Known Subclasses
BlockValidator, Validations::AbsenceValidator, Validations::AcceptanceValidator, Validations::ConfirmationValidator, Validations::ExclusionValidator, Validations::FormatValidator, Validations::InclusionValidator, Validations::LengthValidator, Validations::NumericalityValidator, Validations::PresenceValidator, Validations::WithValidator, ActiveRecord::Validations::AssociatedValidator, ActiveRecord::Validations::UniquenessValidator
Instance Attribute Summary collapse
-
#attributes ⇒ Object
readonly
:nodoc:.
Attributes inherited from Validator
Instance Method Summary collapse
-
#check_validity! ⇒ Object
Hook method that gets called by the initializer allowing verification that the arguments supplied are valid.
-
#initialize(options) ⇒ EachValidator
constructor
Returns a new validator instance.
-
#validate(record) ⇒ Object
Performs validation on the supplied record.
-
#validate_each(record, attribute, value) ⇒ Object
Override this method in subclasses with the validation logic, adding errors to the records
errors
array where necessary.
Methods inherited from Validator
Constructor Details
#initialize(options) ⇒ EachValidator
Returns a new validator instance. All options will be available via the options
reader, however the :attributes
option will be removed and instead be made available through the attributes
reader.
153 154 155 156 157 158 |
# File 'activemodel/lib/active_model/validator.rb', line 153 def initialize() @attributes = Array(.delete(:attributes)) raise ArgumentError, ":attributes cannot be blank" if @attributes.empty? super check_validity! end |
Instance Attribute Details
#attributes ⇒ Object (readonly)
:nodoc:
148 149 150 |
# File 'activemodel/lib/active_model/validator.rb', line 148 def attributes @attributes end |
Instance Method Details
#check_validity! ⇒ Object
Hook method that gets called by the initializer allowing verification that the arguments supplied are valid. You could for example raise an ArgumentError
when invalid options are supplied.
180 181 |
# File 'activemodel/lib/active_model/validator.rb', line 180 def check_validity! end |
#validate(record) ⇒ Object
Performs validation on the supplied record. By default this will call validates_each
to determine validity therefore subclasses should override validates_each
with validation logic.
163 164 165 166 167 168 169 |
# File 'activemodel/lib/active_model/validator.rb', line 163 def validate(record) attributes.each do |attribute| value = record.read_attribute_for_validation(attribute) next if (value.nil? && [:allow_nil]) || (value.blank? && [:allow_blank]) validate_each(record, attribute, value) end end |
#validate_each(record, attribute, value) ⇒ Object
Override this method in subclasses with the validation logic, adding errors to the records errors
array where necessary.
173 174 175 |
# File 'activemodel/lib/active_model/validator.rb', line 173 def validate_each(record, attribute, value) raise NotImplementedError, "Subclasses must implement a validate_each(record, attribute, value) method" end |