2017-01-24 12 views
0

В моем приложении используется Postgresql.
Мне нужно было бы удалить все строки из набора таблиц (table1 до table4) и перезапустить id с помощью одной команды из файла rb.Усечь и перезапустить идентификатор набора таблиц

В Postgresql documentation я обнаружил, что TRUNCATE с RESTART IDENTITY будет делать эту работу следующим образом:

TRUNCATE table1, table2, table3, table4 RESTART IDENTITY; 

Согласно How to restart id counting on a table in PostgreSQL after deleting some previous data? в Stackoverflow, можно использовать следующую команду:

ActiveRecord::Base.connection.execute("TRUNCATE TABLE your_table_name RESTART IDENTITY") 

Так кладя вместе с двумя документами, было бы правильным использовать следующую команду:

ActiveRecord::Base.connection.execute("TRUNCATE table1, table2, table3, table4 RESTART IDENTITY") 

Учитывая, что в документации API dock метод connection указан как устаревший или перемещенный ?.

ответ

1

Рекомендованным способом в настоящее время является использование блока ActiveRecord::Base.connection_pool.with_connection.

ActiveRecord::Base.connection_pool.with_connection do |conn| 
    conn.execute("TRUNCATE table1, table2, table3, table4 RESTART IDENTITY") 
end