method
validate_each
v6.0.0 -
Show latest stable
-
0 notes -
Class: ActiveModel::Validations::NumericalityValidator
- 1.0.0
- 1.1.6
- 1.2.6
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.8
- 3.0.0 (0)
- 3.0.9 (0)
- 3.1.0 (0)
- 3.2.1 (0)
- 3.2.8 (0)
- 3.2.13 (0)
- 4.0.2 (0)
- 4.1.8 (0)
- 4.2.1 (0)
- 4.2.7 (0)
- 4.2.9 (0)
- 5.0.0.1 (0)
- 5.1.7 (0)
- 5.2.3 (0)
- 6.0.0 (0)
- 6.1.3.1 (0)
- 6.1.7.7 (0)
- 7.0.0 (0)
- 7.1.3.2 (0)
- 7.1.3.4 (0)
- What's this?
validate_each(record, attr_name, value)
public
Hide source
# File activemodel/lib/active_model/validations/numericality.rb, line 25 def validate_each(record, attr_name, value) came_from_user = :"#{attr_name}_came_from_user?" if record.respond_to?(came_from_user) if record.public_send(came_from_user) raw_value = record.read_attribute_before_type_cast(attr_name) elsif record.respond_to?(:read_attribute) raw_value = record.read_attribute(attr_name) end else before_type_cast = :"#{attr_name}_before_type_cast" if record.respond_to?(before_type_cast) raw_value = record.public_send(before_type_cast) end end raw_value ||= value if record_attribute_changed_in_place?(record, attr_name) raw_value = value end unless is_number?(raw_value) record.errors.add(attr_name, :not_a_number, filtered_options(raw_value)) return end if allow_only_integer?(record) && !is_integer?(raw_value) record.errors.add(attr_name, :not_an_integer, filtered_options(raw_value)) return end value = parse_as_number(raw_value) options.slice(*CHECKS.keys).each do |option, option_value| case option when :odd, :even unless value.to_i.send(CHECKS[option]) record.errors.add(attr_name, option, filtered_options(value)) end else case option_value when Proc option_value = option_value.call(record) when Symbol option_value = record.send(option_value) end option_value = parse_as_number(option_value) unless value.send(CHECKS[option], option_value) record.errors.add(attr_name, option, filtered_options(value).merge!(count: option_value)) end end end end