1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
module Validatable
class ValidatesLengthOf < ValidationBase #:nodoc:
option :minimum, :maximum, :is, :within, :allow_nil
def message(instance)
super || "is invalid"
end
def valid?(instance)
valid = true
value = instance.send(self.attribute)
if value.nil?
return true if allow_nil
value = ""
end
valid &&= value.length <= maximum unless maximum.nil?
valid &&= value.length >= minimum unless minimum.nil?
valid &&= value.length == is unless is.nil?
valid &&= within.include?(value.length) unless within.nil?
valid
end
end
end
|