# File lib/active_record/connection_adapters/abstract/quoting.rb, line 8
      def quote(value, column = nil)
        # records are quoted as their primary key
        return value.quoted_id if value.respond_to?(:quoted_id)

        case value
        when String, ActiveSupport::Multibyte::Chars
          value = value.to_s
          return "'#{quote_string(value)}'" unless column

          case column.type
          when :binary then "'#{quote_string(column.string_to_binary(value))}'"
          when :integer then value.to_i.to_s
          when :float then value.to_f.to_s
          else
            "'#{quote_string(value)}'"
          end

        when true, false
          if column && column.type == :integer
            value ? '1' : '0'
          elsif column && [:text, :string, :binary].include?(column.type)
            value ? "'1'" : "'0'"
          else
            value ? quoted_true : quoted_false
          end
          # BigDecimals need to be put in a non-normalized form and quoted.
        when nil        then "NULL"
        when Numeric, ActiveSupport::Duration
          value = BigDecimal === value ? value.to_s('F') : value.to_s
          if column && ![:integer, :float, :decimal].include?(column.type)
            value = "'#{value}'"
          end
          value
        when Date, Time then "'#{quoted_date(value)}'"
        when Symbol     then "'#{quote_string(value.to_s)}'"
        else
          "'#{quote_string(YAML.dump(value))}'"
        end
      end