Active Model EachValidator
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.
Methods
Attributes
[R] | attributes |
Class Public methods
new(options)
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.
📝 Source code
# File activemodel/lib/active_model/validator.rb, line 140
def initialize(options)
@attributes = Array(options.delete(:attributes))
raise ArgumentError, ":attributes cannot be blank" if @attributes.empty?
super
check_validity!
end
🔎 See on GitHub
Instance Public methods
check_validity!()
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.
📝 Source code
# File activemodel/lib/active_model/validator.rb, line 168
def check_validity!
end
🔎 See on GitHub
validate(record)
Performs validation on the supplied record. By default this will call validate_each
to determine validity therefore subclasses should override validate_each
with validation logic.
📝 Source code
# File activemodel/lib/active_model/validator.rb, line 150
def validate(record)
attributes.each do |attribute|
value = record.read_attribute_for_validation(attribute)
next if (value.nil? && options[:allow_nil]) || (value.blank? && options[:allow_blank])
value = prepare_value_for_validation(value, record, attribute)
validate_each(record, attribute, value)
end
end
🔎 See on GitHub
validate_each(record, attribute, value)
Override this method in subclasses with the validation logic, adding errors to the records errors
array where necessary.
📝 Source code
# File activemodel/lib/active_model/validator.rb, line 161
def validate_each(record, attribute, value)
raise NotImplementedError, "Subclasses must implement a validate_each(record, attribute, value) method"
end
🔎 See on GitHub