Skip to content

Commit 579730f

Browse files
authored
Merge pull request #759 from aidanharan/table-name-required-on-column-for-identity
Rails 6: Store table names on columns to generate identities
2 parents 8b48e5f + 2360741 commit 579730f

File tree

2 files changed

+13
-10
lines changed

2 files changed

+13
-10
lines changed

lib/active_record/connection_adapters/sqlserver/schema_statements.rb

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -66,14 +66,13 @@ def indexes(table_name)
6666
def columns(table_name)
6767
return [] if table_name.blank?
6868
column_definitions(table_name).map do |ci|
69-
sqlserver_options = ci.slice :ordinal_position, :is_primary, :is_identity
69+
sqlserver_options = ci.slice :ordinal_position, :is_primary, :is_identity, :table_name
7070
sql_type_metadata = fetch_type_metadata ci[:type], sqlserver_options
7171
new_column(
7272
ci[:name],
7373
ci[:default_value],
7474
sql_type_metadata,
7575
ci[:null],
76-
ci[:table_name],
7776
ci[:default_function],
7877
ci[:collation],
7978
nil,
@@ -82,16 +81,16 @@ def columns(table_name)
8281
end
8382
end
8483

85-
def new_column(name, default, sql_type_metadata, null, table_name, default_function = nil, collation = nil, comment = nil, sqlserver_options = {})
84+
def new_column(name, default, sql_type_metadata, null, default_function = nil, collation = nil, comment = nil, sqlserver_options = {})
8685
SQLServerColumn.new(
8786
name,
8887
default,
8988
sql_type_metadata,
90-
null, table_name,
89+
null,
9190
default_function,
92-
collation,
93-
comment,
94-
sqlserver_options
91+
collation: collation,
92+
comment: comment,
93+
**sqlserver_options
9594
)
9695
end
9796

lib/active_record/connection_adapters/sqlserver_column.rb

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ module ActiveRecord
22
module ConnectionAdapters
33
class SQLServerColumn < Column
44

5-
def initialize(name, default, sql_type_metadata = nil, null = true, table_name = nil, default_function = nil, collation = nil, comment = nil, sqlserver_options = {})
6-
@sqlserver_options = sqlserver_options || {}
7-
super(name, default, sql_type_metadata, null, default_function, collation: collation, comment: comment)
5+
def initialize(name, default, sql_type_metadata = nil, null = true, default_function = nil, collation: nil, comment: nil, **sqlserver_options)
6+
@sqlserver_options = sqlserver_options
7+
super
88
end
99

1010
def is_identity?
@@ -15,6 +15,10 @@ def is_primary?
1515
@sqlserver_options[:is_primary]
1616
end
1717

18+
def table_name
19+
@sqlserver_options[:table_name]
20+
end
21+
1822
def is_utf8?
1923
sql_type =~ /nvarchar|ntext|nchar/i
2024
end

0 commit comments

Comments
 (0)