Skip to content

Commit 7082d34

Browse files
committed
Eliminate lease_connection call in UniquenessValidator
1 parent 97755b8 commit 7082d34

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

activerecord/lib/active_record/validations/uniqueness.rb

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -110,16 +110,20 @@ def resolve_attributes(record, attributes)
110110

111111
def build_relation(klass, attribute, value)
112112
relation = klass.unscoped
113-
comparison = relation.bind_attribute(attribute, value) do |attr, bind|
114-
return relation.none! if bind.unboundable?
113+
# TODO: Add case-sensitive / case-insensitive operators to Arel
114+
# to no longer need to checkout a connection here.
115+
comparison = klass.with_connection do |connection|
116+
relation.bind_attribute(attribute, value) do |attr, bind|
117+
return relation.none! if bind.unboundable?
115118

116-
if !options.key?(:case_sensitive) || bind.nil?
117-
klass.lease_connection.default_uniqueness_comparison(attr, bind)
118-
elsif options[:case_sensitive]
119-
klass.lease_connection.case_sensitive_comparison(attr, bind)
120-
else
121-
# will use SQL LOWER function before comparison, unless it detects a case insensitive collation
122-
klass.lease_connection.case_insensitive_comparison(attr, bind)
119+
if !options.key?(:case_sensitive) || bind.nil?
120+
connection.default_uniqueness_comparison(attr, bind)
121+
elsif options[:case_sensitive]
122+
connection.case_sensitive_comparison(attr, bind)
123+
else
124+
# will use SQL LOWER function before comparison, unless it detects a case insensitive collation
125+
connection.case_insensitive_comparison(attr, bind)
126+
end
123127
end
124128
end
125129

0 commit comments

Comments
 (0)