Module: DatabaseValidations::Helpers

Defined in:
lib/database_validations/helpers.rb

Class Method Summary collapse

Class Method Details

.handle_unique_error(instance, error) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/database_validations/helpers.rb', line 14

def handle_unique_error(instance, error)
  columns = DatabaseValidations::Adapters
              .factory(instance.class)
              .error_columns(error.message)
              .map!(&:to_s)
              .sort!

  options = instance.class.validates_db_uniqueness[columns]

  error_options = options.except(:case_sensitive, :scope, :conditions, :attributes)
  error_options[:value] = instance.public_send(options[:attributes])

  instance.errors.add(options[:attributes], :taken, error_options)
end

.raise_if_index_missed!(model, columns) ⇒ Object



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

def raise_if_index_missed!(model, columns)
  connection = model.connection rescue return
  index = connection.indexes(model.table_name)
            .select(&:unique)
            .find { |index| index.columns.map(&:to_s).sort == columns }

  raise Errors::IndexNotFound.new(columns) unless index
end