Class: CustomValidator

Inherits:
BaseValidator show all
Defined in:
lib/schemy/validators/custom_validator.rb

Instance Attribute Summary

Attributes inherited from BaseValidator

#table

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BaseValidator

#initialize, #validate

Constructor Details

This class inherits a constructor from BaseValidator

Class Method Details

.config_file_pathObject



21
22
23
# File 'lib/schemy/validators/custom_validator.rb', line 21

def self.config_file_path
  Rails.root.join 'config', 'schemy.yml'
end

.configured_column_combinationsObject



25
26
27
# File 'lib/schemy/validators/custom_validator.rb', line 25

def self.configured_column_combinations
  @configured_column_combinations ||= load_configured_column_combinations
end

.load_configured_column_combinationsObject



29
30
31
32
33
34
35
36
# File 'lib/schemy/validators/custom_validator.rb', line 29

def self.load_configured_column_combinations
  if File.exists? config_file_path
    config = YAML.load_file config_file_path
    config['indexed_columns']
  else
    []
  end
end

Instance Method Details

#validate_column(column) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/schemy/validators/custom_validator.rb', line 5

def validate_column column
  self.class.configured_column_combinations.each do |config_columns|

    config_columns = Array(config_columns)

    # Only validate this column if it's first in the combination config.
    # This way we don't create duplicate indices.
    if column == config_columns.first 
      # Only require an index if this table has all of the columns in the column combination.
      return unless config_columns[1..-1].all? { |col| @table.has_column? col }
      require_index config_columns
    end

  end
end