aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/lib')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract_adapter.rb4
-rw-r--r--activerecord/lib/active_record/validations/uniqueness.rb4
2 files changed, 7 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
index 3c9510e469..c1d846f58d 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
@@ -506,6 +506,10 @@ module ActiveRecord
@connection
end
+ def default_uniqueness_comparison(attribute, value) # :nodoc:
+ case_sensitive_comparison(attribute, value)
+ end
+
def case_sensitive_comparison(attribute, value) # :nodoc:
attribute.eq(value)
end
diff --git a/activerecord/lib/active_record/validations/uniqueness.rb b/activerecord/lib/active_record/validations/uniqueness.rb
index fb745af125..88ae62c681 100644
--- a/activerecord/lib/active_record/validations/uniqueness.rb
+++ b/activerecord/lib/active_record/validations/uniqueness.rb
@@ -12,7 +12,7 @@ module ActiveRecord
raise ArgumentError, "#{options[:scope]} is not supported format for :scope option. " \
"Pass a symbol or an array of symbols instead: `scope: :user_id`"
end
- super({ case_sensitive: true }.merge!(options))
+ super
@klass = options[:class]
end
@@ -62,6 +62,8 @@ module ActiveRecord
if bind.nil?
attr.eq(bind)
+ elsif !options.key?(:case_sensitive)
+ klass.connection.default_uniqueness_comparison(attr, bind)
elsif options[:case_sensitive]
klass.connection.case_sensitive_comparison(attr, bind)
else