# File lib/active_model/validations/numericality.rb, line 16 16: def check_validity! 17: keys = CHECKS.keys - [:odd, :even] 18: options.slice(*keys).each do |option, value| 19: next if value.is_a?(Numeric) || value.is_a?(Proc) || value.is_a?(Symbol) 20: raise ArgumentError, ":#{option} must be a number, a symbol or a proc" 21: end 22: end
# File lib/active_model/validations/numericality.rb, line 24 24: def validate_each(record, attr_name, value) 25: before_type_cast = "#{attr_name}_before_type_cast" 26: 27: raw_value = record.send("#{attr_name}_before_type_cast") if record.respond_to?(before_type_cast.to_sym) 28: raw_value ||= value 29: 30: return if options[:allow_nil] && raw_value.nil? 31: 32: unless value = parse_raw_value_as_a_number(raw_value) 33: record.errors.add(attr_name, :not_a_number, filtered_options(raw_value)) 34: return 35: end 36: 37: if options[:only_integer] 38: unless value = parse_raw_value_as_an_integer(raw_value) 39: record.errors.add(attr_name, :not_an_integer, filtered_options(raw_value)) 40: return 41: end 42: end 43: 44: options.slice(*CHECKS.keys).each do |option, option_value| 45: case option 46: when :odd, :even 47: unless value.to_i.send(CHECKS[option]) 48: record.errors.add(attr_name, option, filtered_options(value)) 49: end 50: else 51: option_value = option_value.call(record) if option_value.is_a?(Proc) 52: option_value = record.send(option_value) if option_value.is_a?(Symbol) 53: 54: unless value.send(CHECKS[option], option_value) 55: record.errors.add(attr_name, option, filtered_options(value).merge(:count => option_value)) 56: end 57: end 58: end 59: end
# File lib/active_model/validations/numericality.rb, line 80 80: def filtered_options(value) 81: options.except(*RESERVED_OPTIONS).merge!(:value => value) 82: end
# File lib/active_model/validations/numericality.rb, line 63 63: def parse_raw_value_as_a_number(raw_value) 64: case raw_value 65: when /\A0[xX]/ 66: nil 67: else 68: begin 69: Kernel.Float(raw_value) 70: rescue ArgumentError, TypeError 71: nil 72: end 73: end 74: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.