Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails是否可以在不重新查询的情况下将最后一条记录插入数据库?_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails Rails是否可以在不重新查询的情况下将最后一条记录插入数据库?

Ruby on rails Rails是否可以在不重新查询的情况下将最后一条记录插入数据库?,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我的视图中有一个链接,它通过ajax调用下面的方法。我基本上是试图获取通过@application.update_attributes(params[:application])插入的记录的id,但是当我调用@curr_app=@application.application_field.last时,它返回在ajax调用之前插入的最后一条记录 例如,如果我最初点击页面,并说应用程序字段表中的最高id是50,那么当我单击我的ajax链接时,@curr\u app.id始终是50,无论我单击我的aj

我的视图中有一个链接,它通过ajax调用下面的方法。我基本上是试图获取通过
@application.update_attributes(params[:application])
插入的记录的id,但是当我调用
@curr_app=@application.application_field.last
时,它返回在ajax调用之前插入的最后一条记录

例如,如果我最初点击页面,并说应用程序字段表中的最高id是50,那么当我单击我的ajax链接时,
@curr\u app.id
始终是50,无论我单击我的ajax链接多少次

我想
@application.application\u字段。last
应该获取数据库中的最后一条记录吗?如何获取最后插入的记录?我需要重新查询吗

  # PUT /applications/1
  # PUT /applications/1.json
  def update
    @application = Application.find(params[:id])

    respond_to do |format|
      if @application.update_attributes(params[:application])

        @curr_app = @application.application_field.last
        puts @curr_app.id

        format.html { redirect_to @application, notice: 'Application was successfully updated.' }
        format.json { head :no_content }
        format.js
      else
        format.html { render action: "edit" }
        format.json { render json: @application.errors, status: :unprocessable_entity }
        format.js
      end
    end
  end

我相信你必须这样做

@application.reload
然而,Rails在相同的请求处理过程中缓存查询,因此它可能从缓存而不是数据库中获得结果。您只需尝试查看日志,就可以了解它的来源

或许

@curr_app = ApplicationField.last

最后,我不得不重新查询数据库以获取最后一条记录。

您是否尝试过:

@app = Application.find(:last)

可用于获取id的同一变量为: @curr_id=@application.id 在您离开此页面之前,它仍然具有json和数据

def update
@application = Application.find(params[:id])

respond_to do |format|
  if @application.update_attributes(params[:application])

    @curr_app = @application.id

    format.html { redirect_to @application, notice: 'Application was successfully updated.' }
    format.json { head :no_content }
    format.js
  else
    format.html { render action: "edit" }
    format.json { render json: @application.errors, status: :unprocessable_entity }
    format.js
  end
end

结束

这取决于数据库。有些支持
returning
子句,它允许您获取刚刚插入的行的ID。