Class: Mongoid::Validations::UniquenessValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/mongoid-encrypted-fields/mongoid3/validations/uniqueness.rb

Overview

Monkey-patch for Mongoid’s uniqueness validator to enforce that the :case_sensitive option does not work for encrypted fields; they must always be case-sensitive. Patch is confirmed to work on Mongoid >= 3.0.0

Instance Method Summary collapse

Instance Method Details

#setup_with_validation(klass) ⇒ Object Also known as: setup



11
12
13
14
15
16
17
18
# File 'lib/mongoid-encrypted-fields/mongoid3/validations/uniqueness.rb', line 11

def setup_with_validation(klass)
  setup_without_validation(klass)
  return if case_sensitive?
  attributes.each do |attribute|
    field_type = @klass.fields[@klass.database_field_name(attribute)].options[:type]
    raise ArgumentError, "Encrypted field :#{attribute} cannot support case insensitive uniqueness" if field_type && field_type.method_defined?(:encrypted)
  end
end