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