class ActiveModel::Validations::BytesizeValidator
Attributes
encoding[R]
Public Class Methods
new(options = {})
click to toggle source
Calls superclass method
# File lib/active_model/validations/bytesize.rb, line 6 def initialize(options = {}) super @encoding = Encoding.find(options[:encoding]) if options[:encoding] end
Public Instance Methods
check_validity!()
click to toggle source
# File lib/active_model/validations/bytesize.rb, line 11 def check_validity! unless options[:maximum].is_a?(Integer) && options[:maximum] >= 0 raise ArgumentError, ":maximum must be set to a nonnegative Integer" end end
validate_each(record, attribute, value)
click to toggle source
# File lib/active_model/validations/bytesize.rb, line 17 def validate_each(record, attribute, value) string = ActiveRecord::DatabaseValidations::MySQL.value_for_column(value, options[:encoding]) if string.bytesize > options[:maximum] errors_options = options.except(:too_many_bytes, :maximum) default_message = options[:too_many_bytes] errors_options[:count] = options[:maximum] errors_options[:message] ||= default_message if default_message record.errors.add(attribute, :too_many_bytes, **errors_options) end end