Skip to content

Commit 8ab734d

Browse files
committed
Run fixture statements seperately so identity insert can be turned on properly
1 parent 3dec3c8 commit 8ab734d

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

lib/active_record/connection_adapters/sqlserver/database_statements.rb

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,27 @@ def can_perform_case_insensitive_comparison_for?(column)
9090

9191
# === SQLServer Specific ======================================== #
9292

93+
94+
def insert_fixtures_set(fixture_set, tables_to_delete = [])
95+
fixture_inserts = fixture_set.map do |table_name, fixtures|
96+
next if fixtures.empty?
97+
98+
build_fixture_sql(fixtures, table_name)
99+
end.compact
100+
101+
table_deletes = tables_to_delete.map { |table| "DELETE FROM #{quote_table_name table}".dup }
102+
sql_statements = table_deletes + fixture_inserts
103+
104+
disable_referential_integrity do
105+
transaction(requires_new: true) do
106+
sql_statements.each do |sql|
107+
execute sql, "Fixtures Load"
108+
yield if block_given?
109+
end
110+
end
111+
end
112+
end
113+
93114
def execute_procedure(proc_name, *variables)
94115
vars = if variables.any? && variables.first.is_a?(Hash)
95116
variables.first.map { |k, v| "@#{k} = #{quote(v)}" }

0 commit comments

Comments
 (0)