build_relation(klass, attribute, value) private

No documentation

This method has no description. You can help the Ruby on Rails community by adding new notes.

Hide source
# 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
Register or log in to add new notes.