aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/fixtures.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/lib/active_record/fixtures.rb')
-rwxr-xr-xactiverecord/lib/active_record/fixtures.rb31
1 files changed, 16 insertions, 15 deletions
diff --git a/activerecord/lib/active_record/fixtures.rb b/activerecord/lib/active_record/fixtures.rb
index f17768e1f2..df41a1e370 100755
--- a/activerecord/lib/active_record/fixtures.rb
+++ b/activerecord/lib/active_record/fixtures.rb
@@ -63,10 +63,13 @@ class Fixtures < Hash
begin
ActiveRecord::Base.logger.level = Logger::ERROR
- fixtures = connection.transaction do
- table_names.flatten.map do |table_name|
+ fixtures = []
+ connection.transaction do
+ fixtures = table_names.flatten.map do |table_name|
Fixtures.new(connection, table_name.to_s, File.join(fixtures_directory, table_name.to_s))
end
+ fixtures.reverse.each{ |fixture| fixture.delete_existing_fixtures }
+ fixtures.each{ |fixture| fixture.insert_fixtures }
end
return fixtures.size > 1 ? fixtures : fixtures.first
ensure
@@ -79,8 +82,16 @@ class Fixtures < Hash
@class_name = Inflector.classify(@table_name)
read_fixture_files
- delete_existing_fixtures
- insert_fixtures
+ end
+
+ def delete_existing_fixtures
+ @connection.delete "DELETE FROM #{@table_name}"
+ end
+
+ def insert_fixtures
+ values.each do |fixture|
+ @connection.execute "INSERT INTO #{@table_name} (#{fixture.key_list}) VALUES(#{fixture.value_list})"
+ end
end
private
@@ -96,16 +107,6 @@ class Fixtures < Hash
end
end
- def delete_existing_fixtures
- @connection.delete "DELETE FROM #{@table_name}"
- end
-
- def insert_fixtures
- values.each do |fixture|
- @connection.execute "INSERT INTO #{@table_name} (#{fixture.key_list}) VALUES(#{fixture.value_list})"
- end
- end
-
def yaml_file_path
@fixture_path + ".yml"
end
@@ -205,4 +206,4 @@ class Test::Unit::TestCase #:nodoc:
def fixture_table_names
self.class.read_inheritable_attribute("fixture_table_names")
end
-end \ No newline at end of file
+end