class DatabaseValidations::DbUniquenessValidator

Constants

DEFAULT_MODE

Attributes

index_name[R]
klass[R]
where[R]

Public Class Methods

kind() click to toggle source

Used to make 3rd party libraries work correctly

@return [Symbol]

# File lib/database_validations/lib/validators/db_uniqueness_validator.rb, line 10
def self.kind
  :uniqueness
end
new(options) click to toggle source

@param [Hash] options

Calls superclass method
# File lib/database_validations/lib/validators/db_uniqueness_validator.rb, line 15
def initialize(options)
  options[:allow_nil] = true
  options[:allow_blank] = false

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

  handle_custom_options(options)

  super

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

Public Instance Methods

apply_error(instance, attribute) click to toggle source
# File lib/database_validations/lib/validators/db_uniqueness_validator.rb, line 40
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
perform_db_validation?() click to toggle source
# File lib/database_validations/lib/validators/db_uniqueness_validator.rb, line 32
def perform_db_validation?
  @mode != :standard
end
validate(record) click to toggle source
Calls superclass method
# File lib/database_validations/lib/validators/db_uniqueness_validator.rb, line 36
def validate(record)
  super if perform_query? || record._database_validations_fallback
end

Private Instance Methods

handle_custom_options(options) click to toggle source
# File lib/database_validations/lib/validators/db_uniqueness_validator.rb, line 49
def handle_custom_options(options)
  @index_name = options.delete(:index_name) if options.key?(:index_name)
  @where = options.delete(:where) if options.key?(:where)
  @mode = (options.delete(:mode).presence || DEFAULT_MODE).to_sym
end
perform_query?() click to toggle source
# File lib/database_validations/lib/validators/db_uniqueness_validator.rb, line 55
def perform_query?
  @mode != :optimized
end