Sha256: fa5c935b9c4cd35764cf496cd3d4bd26e6b584d369882d49d22f7f20453d9061
Contents?: true
Size: 1.04 KB
Versions: 3
Compression:
Stored size: 1.04 KB
Contents
class RelationLengthValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) if smaller?(value) record.errors.add(attribute, smaller_error_message, options) elsif greater?(value) record.errors.add(attribute, greater_error_message, options) end end private def minimum options[:minimum] || 0 end def maximum options[:maximum] || Float::INFINITY end def smaller?(value) value.length < minimum end def greater?(value) value.length > minimum end def smaller_error_message message = options[:message] && options[:message][:minimum] message || I18n.t( "activerecord.errors.relation_length_is_smaller", minimum: minimum, default: "must have at least #{ minimum } elements" ) end def greater_error_message message = options[:message] && options[:message][:maximum] message || I18n.t( "activerecord.errors.relation_length_is_greater", maximum: maximum, default: "must have at most #{ maximum } elements" ) end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
para-0.5.1 | lib/rails/relation_length_validator.rb |
para-0.5.0 | lib/rails/relation_length_validator.rb |
para-0.4.0 | lib/rails/relation_length_validator.rb |