Module: ActiveRecord::MySQL::Strict::Mixin::ClassMethods

Defined in:
lib/active_record/mysql/strict/mixin.rb

Instance Method Summary collapse

Instance Method Details

#define_mysql_strict_validationsObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/active_record/mysql/strict/mixin.rb', line 12

def define_mysql_strict_validations
  except = @mysql_strict_options[:except] || []
  model_columns = self.columns.dup.reject { |c| except.include?(c.name.to_sym) }

  if only = @mysql_strict_options[:only]
    model_columns = model_columns.select { |c| only.include?(c.name.to_sym) }
  end

  model_columns.select { |c| c.type == :string }.each do |field|
    validates field.name, length: { in: 0..(field.limit || 255) }, allow_blank: true
  end

  model_columns.select { |c| c.type == :text }.each do |field|
    validates field.name, length: { in: 0..(field.limit || 65535) }, allow_blank: true
  end

  model_columns.select { |c| c.type == :integer }.each do |field|
    validates field.name, numericality: { greather_than_or_equal_to: -2147483647, less_than_or_equal_to: 2147483647 }, allow_blank: true
  end
end