diff options
author | Tarmo Tänav <tarmo@itech.ee> | 2008-05-07 02:08:57 +0300 |
---|---|---|
committer | Michael Koziarski <michael@koziarski.com> | 2008-05-07 13:01:46 +1200 |
commit | 0a21193dc660396fb993b06d1d3c168a9cd900a5 (patch) | |
tree | 2e1cff75eefe09a019bd25f3bbec9975ffb8c032 /activerecord | |
parent | 8877ab5852d9a1133eb9a730ae47dde214bafe55 (diff) | |
download | rails-0a21193dc660396fb993b06d1d3c168a9cd900a5.tar.gz rails-0a21193dc660396fb993b06d1d3c168a9cd900a5.tar.bz2 rails-0a21193dc660396fb993b06d1d3c168a9cd900a5.zip |
create_table :force => true no longer tries to drop a non-existing table
Signed-off-by: Michael Koziarski <michael@koziarski.com>
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb | 4 | ||||
-rw-r--r-- | activerecord/test/cases/migration_test.rb | 18 |
2 files changed, 20 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb b/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb index e2b8896d42..1594be40e2 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb @@ -97,8 +97,8 @@ module ActiveRecord yield table_definition - if options[:force] - drop_table(table_name, options) rescue nil + if options[:force] && table_exists?(table_name) + drop_table(table_name, options) end create_sql = "CREATE#{' TEMPORARY' if options[:temporary]} TABLE " diff --git a/activerecord/test/cases/migration_test.rb b/activerecord/test/cases/migration_test.rb index d4e81827aa..6be31b5f86 100644 --- a/activerecord/test/cases/migration_test.rb +++ b/activerecord/test/cases/migration_test.rb @@ -209,6 +209,24 @@ if ActiveRecord::Base.connection.supports_migrations? ActiveRecord::Base.primary_key_prefix_type = nil end + uses_mocha('test_create_table_with_force_true_does_not_drop_nonexisting_table') do + def test_create_table_with_force_true_does_not_drop_nonexisting_table + if Person.connection.table_exists?(:testings2) + Person.connection.drop_table :testings2 + end + + # using a copy as we need the drop_table method to + # continue to work for the ensure block of the test + temp_conn = Person.connection.dup + temp_conn.expects(:drop_table).never + temp_conn.create_table :testings2, :force => true do |t| + t.column :foo, :string + end + ensure + Person.connection.drop_table :testings2 rescue nil + end + end + # SQL Server, Sybase, and SQLite3 will not allow you to add a NOT NULL # column to a table without a default value. |