method
build_relation
v8.1.1 -
Show latest stable
- Class:
ActiveRecord::Validations::UniquenessValidator
build_relation(klass, attribute, value)private
No documentation available.
# File activerecord/lib/active_record/validations/uniqueness.rb, line 112
def build_relation(klass, attribute, value)
relation = klass.unscoped
# TODO: Add case-sensitive / case-insensitive operators to Arel
# to no longer need to checkout a connection here.
comparison = klass.with_connection do |connection|
relation.bind_attribute(attribute, value) do |attr, bind|
return relation.none! if bind.unboundable?
if !options.key?(:case_sensitive) || bind.nil?
connection.default_uniqueness_comparison(attr, bind)
elsif options[:case_sensitive]
connection.case_sensitive_comparison(attr, bind)
else
# will use SQL LOWER function before comparison, unless it detects a case insensitive collation
connection.case_insensitive_comparison(attr, bind)
end
end
end
relation.where!(comparison)
end