我想在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。这不仅仅是我想执行的一次操作 –