Module: DatabaseValidations::Helpers

Defined in:
lib/database_validations/helpers.rb

Class Method Summary collapse

Class Method Details

.each_options_storage(klass) ⇒ Object



15
16
17
18
19
20
21
# File 'lib/database_validations/helpers.rb', line 15

def each_options_storage(klass)
  while klass.respond_to?(:validates_db_uniqueness_of)
    storage = klass.instance_variable_get(:'@validates_db_uniqueness_opts')
    yield(storage) if storage
    klass = klass.superclass
  end
end

.each_validator(klass) ⇒ Object



23
24
25
26
27
# File 'lib/database_validations/helpers.rb', line 23

def each_validator(klass)
  each_options_storage(klass) do |storage|
    storage.each_validator { |validator| yield(validator) }
  end
end

.generate_key(*columns) ⇒ Object



33
34
35
# File 'lib/database_validations/helpers.rb', line 33

def generate_key(*columns)
  unify_columns(columns).join('__')
end

.handle_unique_error!(instance, error) ⇒ Object



5
6
7
8
9
10
11
12
13
# File 'lib/database_validations/helpers.rb', line 5

def handle_unique_error!(instance, error)
  key = generate_key(Adapters.factory(instance.class).error_columns(error.message))

  each_options_storage(instance.class) do |storage|
    return storage[key].handle_unique_error(instance) if storage[key]
  end

  raise error
end

.unify_columns(*columns) ⇒ Object



29
30
31
# File 'lib/database_validations/helpers.rb', line 29

def unify_columns(*columns)
  columns.flatten.map(&:to_s).sort
end