diff options
author | David Heinemeier Hansson <david@loudthinking.com> | 2004-12-01 12:25:04 +0000 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2004-12-01 12:25:04 +0000 |
commit | 79e85edd71a4c886b1ac074988963588d8c45755 (patch) | |
tree | 47d723e99d0bdeee54832d3760b745e944b2a9b3 /activerecord/lib | |
parent | d4d981d70796a55ab8af9ce5feb506b91052e9c0 (diff) | |
download | rails-79e85edd71a4c886b1ac074988963588d8c45755.tar.gz rails-79e85edd71a4c886b1ac074988963588d8c45755.tar.bz2 rails-79e85edd71a4c886b1ac074988963588d8c45755.zip |
Added reverse order of deleting fixtures, so referential keys can be maintained #247 [Tim Bates]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@38 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord/lib')
-rwxr-xr-x | activerecord/lib/active_record/fixtures.rb | 31 |
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 |