Module: ActiveRecord::Schemas::ConnectionAdapters::SqlserverAdapter

Included in:
ConnectionAdapters::SQLServerAdapter
Defined in:
lib/active_record/schemas/connection_adapters/sqlserver_adapter.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#default_schemaObject



15
16
17
18
19
20
# File 'lib/active_record/schemas/connection_adapters/sqlserver_adapter.rb', line 15

def default_schema
  unless sqlserver_2000?
    @default_schema ||= select_values("SELECT default_schema_name FROM sys.database_principals WHERE type = 'S' and name = '#{self.quote_string(@connection_options[:username])}'").first
  end
  @default_schema ||= 'dbo'
end

Class Method Details

.included(base) ⇒ Object

When this module is included, the following methods are chained in order to strip off the schema names if the schema is the default schema



9
10
11
12
13
# File 'lib/active_record/schemas/connection_adapters/sqlserver_adapter.rb', line 9

def self.included(base)
  base.alias_method_chain :columns, :default_schema_check
  base.alias_method_chain :table_exists?, :default_schema_check
  base.alias_method_chain :table_name_or_views_table_name, :default_schema_check
end

Instance Method Details

#columns_with_default_schema_check(table_name, column_name = nil) ⇒ Object



33
34
35
36
# File 'lib/active_record/schemas/connection_adapters/sqlserver_adapter.rb', line 33

def columns_with_default_schema_check(table_name, column_name = nil)
  table_name = unqualify_table_name_if_default_schema(table_name) if table_name
  columns_without_default_schema_check(table_name, column_name)
end

#index_name(table_name, options) ⇒ Object

override index name so that if there is a schema, rename it schema_table instead of schema.table



49
50
51
# File 'lib/active_record/schemas/connection_adapters/sqlserver_adapter.rb', line 49

def index_name(table_name, options) #:nodoc:
  super table_name.tr('.', '_'), options
end

#table_exists_with_default_schema_check?(table_name) ⇒ Boolean

Returns:

  • (Boolean)


28
29
30
31
# File 'lib/active_record/schemas/connection_adapters/sqlserver_adapter.rb', line 28

def table_exists_with_default_schema_check?(table_name)
  table_name = unqualify_table_name_if_default_schema(table_name)
  table_exists_without_default_schema_check?(table_name)
end

#table_name_or_views_table_name_with_default_schema_check(table_name) ⇒ Object



23
24
25
26
# File 'lib/active_record/schemas/connection_adapters/sqlserver_adapter.rb', line 23

def table_name_or_views_table_name_with_default_schema_check(table_name)
  table_name = unqualify_table_name_if_default_schema(table_name)
  table_name_or_views_table_name_without_default_schema_check(table_name)
end

#unqualify_schema_name(table_name) ⇒ Object



38
39
40
41
# File 'lib/active_record/schemas/connection_adapters/sqlserver_adapter.rb', line 38

def unqualify_schema_name(table_name)
  parts = table_name.to_s.split('.')
  parts.length == 1 ? default_schema : parts[parts.length - 2].gsub(/[\[\]]/,'')
end

#unqualify_table_name_if_default_schema(table_name) ⇒ Object



43
44
45
46
# File 'lib/active_record/schemas/connection_adapters/sqlserver_adapter.rb', line 43

def unqualify_table_name_if_default_schema(table_name)
  schema = unqualify_schema_name(table_name)
  schema == default_schema ? unqualify_table_name(table_name) : table_name
end