Class: ActiveRecord::MySQL::Strict::Validation

Inherits:
Struct
  • Object
show all
Defined in:
lib/active_record/mysql/strict/validation.rb,
lib/active_record/mysql/strict/validation/text_validation.rb,
lib/active_record/mysql/strict/validation/string_validation.rb,
lib/active_record/mysql/strict/validation/integer_validation.rb

Defined Under Namespace

Classes: IntegerValidation, StringValidation, TextValidation

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Attribute Details

#fieldObject

Returns the value of attribute field

Returns:

  • (Object)

    the current value of field



4
5
6
# File 'lib/active_record/mysql/strict/validation.rb', line 4

def field
  @field
end

#modelObject

Returns the value of attribute model

Returns:

  • (Object)

    the current value of model



4
5
6
# File 'lib/active_record/mysql/strict/validation.rb', line 4

def model
  @model
end

Class Method Details

.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