Methods
C
F
P
V
Constants
CHECKS = { :greater_than => :>, :greater_than_or_equal_to => :>=, :equal_to => :==, :less_than => :<, :less_than_or_equal_to => :<=, :odd => :odd?, :even => :even? }.freeze
RESERVED_OPTIONS = CHECKS.keys + [:only_integer]
Instance Public methods
check_validity!()
    # File activemodel/lib/active_model/validations/numericality.rb, line 11
11:       def check_validity!
12:         keys = CHECKS.keys - [:odd, :even]
13:         options.slice(*keys).each do |option, value|
14:           next if value.is_a?(Numeric) || value.is_a?(Proc) || value.is_a?(Symbol)
15:           raise ArgumentError, ":#{option} must be a number, a symbol or a proc"
16:         end
17:       end
validate_each(record, attr_name, value)
    # File activemodel/lib/active_model/validations/numericality.rb, line 19
19:       def validate_each(record, attr_name, value)
20:         before_type_cast = "#{attr_name}_before_type_cast"
21: 
22:         raw_value = record.send(before_type_cast) if record.respond_to?(before_type_cast.to_sym)
23:         raw_value ||= value
24: 
25:         return if options[:allow_nil] && raw_value.nil?
26: 
27:         unless value = parse_raw_value_as_a_number(raw_value)
28:           record.errors.add(attr_name, :not_a_number, filtered_options(raw_value))
29:           return
30:         end
31: 
32:         if options[:only_integer]
33:           unless value = parse_raw_value_as_an_integer(raw_value)
34:             record.errors.add(attr_name, :not_an_integer, filtered_options(raw_value))
35:             return
36:           end
37:         end
38: 
39:         options.slice(*CHECKS.keys).each do |option, option_value|
40:           case option
41:           when :odd, :even
42:             unless value.to_i.send(CHECKS[option])
43:               record.errors.add(attr_name, option, filtered_options(value))
44:             end
45:           else
46:             option_value = option_value.call(record) if option_value.is_a?(Proc)
47:             option_value = record.send(option_value) if option_value.is_a?(Symbol)
48: 
49:             unless value.send(CHECKS[option], option_value)
50:               record.errors.add(attr_name, option, filtered_options(value).merge(:count => option_value))
51:             end
52:           end
53:         end
54:       end
Instance Protected methods
filtered_options(value)
    # File activemodel/lib/active_model/validations/numericality.rb, line 75
75:       def filtered_options(value)
76:         options.except(*RESERVED_OPTIONS).merge!(:value => value)
77:       end
parse_raw_value_as_a_number(raw_value)
    # File activemodel/lib/active_model/validations/numericality.rb, line 58
58:       def parse_raw_value_as_a_number(raw_value)
59:         case raw_value
60:         when /\A0[xX]/
61:           nil
62:         else
63:           begin
64:             Kernel.Float(raw_value)
65:           rescue ArgumentError, TypeError
66:             nil
67:           end
68:         end
69:       end
parse_raw_value_as_an_integer(raw_value)
    # File activemodel/lib/active_model/validations/numericality.rb, line 71
71:       def parse_raw_value_as_an_integer(raw_value)
72:         raw_value.to_i if raw_value.to_s =~ /\A[+-]?\d+\Z/
73:       end