Method: ActiveRecord::MySQL::Strict::Validation.inject_validations

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

.inject_validations(model, options = {}) ⇒ Object

Inject validations into an ActiveRecord model



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/active_record/mysql/strict/validation.rb', line 6

def self.inject_validations(model, options = {})
  except = options[:except] || []
  model_columns = model.columns.dup.reject { |c| except.include?(c.name.to_sym) }

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

  model_columns.each do |field|
    validation = "#{field.type.to_s.camelize}Validation"

    if ActiveRecord::MySQL::Strict::Validation.const_defined?(validation)
      "ActiveRecord::MySQL::Strict::Validation::#{validation}".constantize.new(model, field).apply
    end
  end
end