Class: DatabaseValidations::DbUniquenessValidator

Inherits:
ActiveRecord::Validations::UniquenessValidator
  • Object
show all
Defined in:
lib/database_validations/lib/validators/db_uniqueness_validator.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ DbUniquenessValidator

Returns a new instance of DbUniquenessValidator.

Parameters:

  • options (Hash)


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

def initialize(options)
  options[:allow_nil] = true
  options[:allow_blank] = false

  if options.key?(:where)
    condition = options[:where]
    options[:conditions] = -> { where(condition) }
  end

  @index_name = options.delete(:index_name) if options.key?(:index_name)
  @where = options.delete(:where) if options.key?(:where)

  super

  Injector.inject(klass)
  Checkers::DbUniquenessValidator.validate!(self)
end

Instance Attribute Details

#index_nameObject (readonly)

Returns the value of attribute index_name.



3
4
5
# File 'lib/database_validations/lib/validators/db_uniqueness_validator.rb', line 3

def index_name
  @index_name
end

#klassObject (readonly)

Returns the value of attribute klass.



3
4
5
# File 'lib/database_validations/lib/validators/db_uniqueness_validator.rb', line 3

def klass
  @klass
end

#whereObject (readonly)

Returns the value of attribute where.



3
4
5
# File 'lib/database_validations/lib/validators/db_uniqueness_validator.rb', line 3

def where
  @where
end

Class Method Details

.kindSymbol

Used to make 3rd party libraries work correctly

Returns:

  • (Symbol)


8
9
10
# File 'lib/database_validations/lib/validators/db_uniqueness_validator.rb', line 8

def self.kind
  :uniqueness
end

Instance Method Details

#apply_error(instance, attribute) ⇒ Object



35
36
37
38
39
40
# File 'lib/database_validations/lib/validators/db_uniqueness_validator.rb', line 35

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

  instance.errors.add(attribute, :taken, error_options)
end

#validate(record) ⇒ Object



31
32
33
# File 'lib/database_validations/lib/validators/db_uniqueness_validator.rb', line 31

def validate(record)
  super if record._database_validations_fallback
end