我想在rails中將一個自動增量id字段放入postgre數據庫中。我正在嘗試獲取最大ID,然後添加+1並將其傳遞給創建方法。我不太確定我做錯了什麼,但是如果我有4個項目並添加第5個項目,即獲得ID 5,但是如果我刪除該項目並嘗試添加另一個項目,則會獲得ID 6,而不是5 。這裏是我的代碼:在RAILS中自動增量postgre數據庫ID字段
# GET /admin/projects/new
def new
@project = Project.new
@project.id = Project.maximum(:id).next.to_i
respond_to do |format|
format.html # new.html.erb
end
end
# GET /admin/projects/1/edit
def edit
@project = Project.find(params[:id])
end
# POST /admin/projects
def create
@project = Project.create(params[:project])
respond_to do |format|
if @project.save
format.html { redirect_to projects_path, notice: 'Project was successfully created.' }
else
format.html { render action: "new" }
end
end
end
我試圖添加@project.save
到新的,但像我明白了,.save
只應在創建方法來完成。任何想法將不勝感激:D
如何使用第一種方法並截斷表格?我需要運行遷移嗎? –
你應該使用一個或另一個,但它純粹是在數據庫上,而不是rails交互,轉到sql編輯器,比如mysql的工作臺,執行命令,rails遷移,不對數據做任何事情,只是結構,所以遷移不會在這裏幫助(您可以通過運行rake db:schema:load來重置所有的數據庫,但它的矯枉過正)。 –
我希望能夠在每次擦除項目時重置該序列,以便重置爲表中的最大ID。這不僅僅是我想執行的一次操作 –