2016-02-19 171 views
0

我有一個模型,它有5行。而id是從1,2,3,4,5開始的。但是在rails控制檯中,我做了Model.delete_all。現在,如果我嘗試插入新記錄,則ID將從6開始,而不是1.我希望新記錄的ID從1開始,因爲我刪除了以前的記錄。如何實現這一點。如何刪除活動記錄中已刪除行的ID

感謝

+1

嘿,你可以截斷你的表使用ActiveRecord :: Base.connection.execute(「TRUNCATE TABLE table_name」)而不是'delete_all' –

+1

@gates這真的不需要。這些來自序列的自動增量..但看看http://apidock.com/rails/ActiveRecord/ConnectionAdapters/PostgreSQL/SchemaStatements/reset_pk_sequence%21。 –

回答

1

如果我們要重新開始編號序列,所以我們可以利用這一點:

Postgres的:

ActiveRecord::Base.connection.reset_pk_sequence!(Model.table_name) 

SQLite的

ActiveRecord::Base.connection.execute("update sqlite_sequence set seq = 1 where name = '#{Model.table_name}';") 
+0

嗨,我使用的是Postgres DB。我的模型名稱是PackageType,我的表名是package_types。當我在控制檯ActiveRecord :: Base.connection.reset_pk_sequence!(PackageType.package_types)中做了followinf。我得到沒有方法錯誤。請澄清。 – gates