Class: ActiveRecord::ConnectionAdapters::SQLServerColumn
- Inherits:
-
Column
- Object
- Column
- ActiveRecord::ConnectionAdapters::SQLServerColumn
- Defined in:
- lib/active_record/connection_adapters/sqlserver_adapter.rb
Class Method Summary collapse
- .binary_to_string(value) ⇒ Object
- .string_to_binary(value) ⇒ Object
- .string_to_utf8_encoding(value) ⇒ Object
Instance Method Summary collapse
- #database_year ⇒ Object
- #default_function ⇒ Object
-
#initialize(name, default, sql_type = nil, null = true, sqlserver_options = {}) ⇒ SQLServerColumn
constructor
A new instance of SQLServerColumn.
- #is_identity? ⇒ Boolean
- #is_utf8? ⇒ Boolean
- #table_klass ⇒ Object
- #table_name ⇒ Object
- #type_cast(value) ⇒ Object
- #type_cast_code(var_name) ⇒ Object
Constructor Details
#initialize(name, default, sql_type = nil, null = true, sqlserver_options = {}) ⇒ SQLServerColumn
Returns a new instance of SQLServerColumn.
64 65 66 67 |
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 64 def initialize(name, default, sql_type = nil, null = true, = {}) @sqlserver_options = .symbolize_keys super(name, default, sql_type, null) end |
Class Method Details
.binary_to_string(value) ⇒ Object
80 81 82 83 |
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 80 def binary_to_string(value) value = value.dup.force_encoding(Encoding::BINARY) if value.respond_to?(:force_encoding) value =~ /[^[:xdigit:]]/ ? value : [value].pack('H*') end |
.string_to_binary(value) ⇒ Object
75 76 77 78 |
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 75 def string_to_binary(value) value = value.dup.force_encoding(Encoding::BINARY) if value.respond_to?(:force_encoding) "0x#{value.unpack("H*")[0]}" end |
.string_to_utf8_encoding(value) ⇒ Object
71 72 73 |
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 71 def string_to_utf8_encoding(value) value.force_encoding('UTF-8') rescue value end |
Instance Method Details
#database_year ⇒ Object
128 129 130 |
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 128 def database_year @sqlserver_options[:database_year] end |
#default_function ⇒ Object
111 112 113 |
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 111 def default_function @sqlserver_options[:default_function] end |
#is_identity? ⇒ Boolean
103 104 105 |
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 103 def is_identity? @sqlserver_options[:is_identity] end |
#is_utf8? ⇒ Boolean
107 108 109 |
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 107 def is_utf8? @sql_type =~ /nvarchar|ntext|nchar/i end |
#table_klass ⇒ Object
119 120 121 122 123 124 125 126 |
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 119 def table_klass @table_klass ||= begin table_name.classify.constantize rescue StandardError, NameError, LoadError nil end (@table_klass && @table_klass < ActiveRecord::Base) ? @table_klass : nil end |
#table_name ⇒ Object
115 116 117 |
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 115 def table_name @sqlserver_options[:table_name] end |
#type_cast(value) ⇒ Object
87 88 89 90 91 92 93 |
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 87 def type_cast(value) if value && type == :string && is_utf8? self.class.string_to_utf8_encoding(value) else super end end |
#type_cast_code(var_name) ⇒ Object
95 96 97 98 99 100 101 |
# File 'lib/active_record/connection_adapters/sqlserver_adapter.rb', line 95 def type_cast_code(var_name) if type == :string && is_utf8? "#{self.class.name}.string_to_utf8_encoding(#{var_name})" else super end end |