Sha256: 44ced25bb7583a18088b2b422e52173252cea82ce79cb9ae04bdfae63c76af90

Contents?: true

Size: 1.62 KB

Versions: 4

Compression:

Stored size: 1.62 KB

Contents

module ActiveRecord
  module ConnectionAdapters
    module Sqlserver
      module Quoting
        
        QUOTED_TRUE, QUOTED_FALSE = '1', '0'
        
        def quote(value, column = nil)
          case value
          when String, ActiveSupport::Multibyte::Chars
            if column && column.type == :binary
              column.class.string_to_binary(value)
            elsif value.is_utf8? || (column && column.type == :string)
              "N'#{quote_string(value)}'"
            else
              super
            end
          when nil
            column.respond_to?(:sql_type) && column.sql_type == 'timestamp' ? 'DEFAULT' : super
          else
            super
          end
        end

        def quote_string(string)
          string.to_s.gsub(/\'/, "''")
        end

        def quote_column_name(name)
          @sqlserver_quoted_column_and_table_names[name] ||= 
            name.to_s.split('.').map{ |n| n =~ /^\[.*\]$/ ? n : "[#{n}]" }.join('.')
        end

        def quote_table_name(name)
          quote_column_name(name)
        end
        
        def substitute_at(column, index)
          if column.respond_to?(:sql_type) && column.sql_type == 'timestamp'
            nil
          else
            Arel.sql "@#{index}"
          end
        end

        def quoted_true
          QUOTED_TRUE
        end

        def quoted_false
          QUOTED_FALSE
        end

        def quoted_date(value)
          if value.acts_like?(:time) && value.respond_to?(:usec)
            "#{super}.#{sprintf("%03d",value.usec/1000)}"
          else
            super
          end
        end
        
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
activerecord-sqlserver-adapter-3.1.0.rc2 lib/active_record/connection_adapters/sqlserver/quoting.rb
activerecord-sqlserver-adapter-3.1.0.rc1 lib/active_record/connection_adapters/sqlserver/quoting.rb
activerecord-sqlserver-adapter-3.1.0.beta2 lib/active_record/connection_adapters/sqlserver/quoting.rb
activerecord-sqlserver-adapter-3.1.0.beta1 lib/active_record/connection_adapters/sqlserver/quoting.rb