Module: DatabaseValidations::Helpers
- Defined in:
- lib/database_validations/validations/helpers.rb
Class Method Summary collapse
- .each_options_storage(klass) ⇒ Object
- .each_validator(klass) ⇒ Object
- .generate_key(*columns) ⇒ Object
- .handle_unique_error!(instance, error) ⇒ Object
- .unify_columns(*columns) ⇒ Object
Class Method Details
.each_options_storage(klass) ⇒ Object
18 19 20 21 22 23 24 |
# File 'lib/database_validations/validations/helpers.rb', line 18 def (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
26 27 28 29 30 |
# File 'lib/database_validations/validations/helpers.rb', line 26 def each_validator(klass) (klass) do |storage| storage.each_validator { |validator| yield(validator) } end end |
.generate_key(*columns) ⇒ Object
36 37 38 |
# File 'lib/database_validations/validations/helpers.rb', line 36 def generate_key(*columns) unify_columns(columns).join('__') end |
.handle_unique_error!(instance, error) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/database_validations/validations/helpers.rb', line 5 def handle_unique_error!(instance, error) adapter = Adapters.factory(instance.class) index_key = adapter.index_name(error.) column_key = generate_key(adapter.error_columns(error.)) (instance.class) do |storage| return storage[index_key].handle_unique_error(instance) if storage[index_key] return storage[column_key].handle_unique_error(instance) if storage[column_key] end raise error end |
.unify_columns(*columns) ⇒ Object
32 33 34 |
# File 'lib/database_validations/validations/helpers.rb', line 32 def unify_columns(*columns) columns.flatten.compact.map(&:to_s).sort end |