class ActiveModel::Validations::InclusionValidator
Constants
- ERROR_MESSAGE
Public Instance Methods
check_validity!()
click to toggle source
# File lib/active_model/validations/inclusion.rb, line 10 def check_validity! unless [:include?, :call].any?{ |method| delimiter.respond_to?(method) } raise ArgumentError, ERROR_MESSAGE end end
validate_each(record, attribute, value)
click to toggle source
# File lib/active_model/validations/inclusion.rb, line 16 def validate_each(record, attribute, value) exclusions = delimiter.respond_to?(:call) ? delimiter.call(record) : delimiter unless exclusions.send(inclusion_method(exclusions), value) record.errors.add(attribute, :inclusion, options.except(:in, :within).merge!(:value => value)) end end
Private Instance Methods
delimiter()
click to toggle source
# File lib/active_model/validations/inclusion.rb, line 25 def delimiter @delimiter ||= options[:in] || options[:within] end
inclusion_method(enumerable)
click to toggle source
In Ruby 1.9 Range#include?
on non-numeric ranges checks all
possible values in the range for equality, so it may be slow for large
ranges. The new Range#cover?
uses the previous logic of
comparing a value with the range endpoints.
# File lib/active_model/validations/inclusion.rb, line 33 def inclusion_method(enumerable) enumerable.is_a?(Range) ? :cover? : :include? end