diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2019-03-10 01:53:48 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2019-03-17 05:20:46 +0900 |
commit | fdac932707fb16b7d074b1d0bc7c255157d72675 (patch) | |
tree | 7932190a3b429886c69e3209926ce766ebce0895 /activerecord/lib/active_record/tasks/database_tasks.rb | |
parent | 1db05065434e1b5341e6748632e310060e92b80d (diff) | |
download | rails-fdac932707fb16b7d074b1d0bc7c255157d72675.tar.gz rails-fdac932707fb16b7d074b1d0bc7c255157d72675.tar.bz2 rails-fdac932707fb16b7d074b1d0bc7c255157d72675.zip |
Extract `truncate` and `truncate_tables` into database statements
This is to easier make `truncate_tables` to bulk statements.
Diffstat (limited to 'activerecord/lib/active_record/tasks/database_tasks.rb')
-rw-r--r-- | activerecord/lib/active_record/tasks/database_tasks.rb | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/tasks/database_tasks.rb b/activerecord/lib/active_record/tasks/database_tasks.rb index a8433fa0db..5a46003732 100644 --- a/activerecord/lib/active_record/tasks/database_tasks.rb +++ b/activerecord/lib/active_record/tasks/database_tasks.rb @@ -185,14 +185,17 @@ module ActiveRecord def truncate_tables(configuration) ActiveRecord::Base.connected_to(database: { truncation: configuration }) do table_names = ActiveRecord::Base.connection.tables - internal_table_names = [ + table_names -= [ ActiveRecord::Base.schema_migrations_table_name, ActiveRecord::Base.internal_metadata_table_name ] - class_for_adapter(configuration["adapter"]).new(configuration).truncate_tables(*table_names.without(*internal_table_names)) + ActiveRecord::Base.connection.disable_referential_integrity do + ActiveRecord::Base.connection.truncate_tables(*table_names) + end unless table_names.empty? end end + private :truncate_tables def truncate_all(environment = env) ActiveRecord::Base.configurations.configs_for(env_name: environment).each do |db_config| |