防止在未更改任何字段的 Rails 应用程序中更新记录

Jam*_*hon 0 ruby ruby-on-rails

我正在寻找一种方法来防止用户在我的 Rails 应用程序中没有更改任何值时单击更新方法的更新。如果他们不更改任何值,我的 UPDATE 方法将在某些字段中写入空值,因此如果用户不更改任何详细信息而只是单击更新,我需要应用程序来防止更新记录。

任何建议将不胜感激。

仅供参考,这是标准的千篇一律的更新方法:

def update
    if @client.update(client_params)
      redirect_to @client, notice: 'Client was successfully updated.'
    else
      render :edit
    end
  end
Run Code Online (Sandbox Code Playgroud)

Nan*_*ini 5

默认情况下,只有在修改任何一个值时,才会执行 Rails UPDATE 方法。如果没有修改字段值,UPDATE 方法将不会运行查询,只需检查并返回结果。

我将给出相同的例子。我有一个组织模型,其中我最初使用相同的现有字段值更新了记录:

邮递员更新请求 第一次更新的控制台日志(没有更改值)

我刚刚修改了字段值之一 - 内部状态 仅更新修改后的值的控制台日志 邮递员更新新值的请求

注意:在更新中,最好发送旧值以避免将空值存储在数据库中。在您的情况下,更新需要“client_params”中定义的所有参数。如果发送空参数,请包含一个 nil 检查或验证以避免相同。您还可以为此编写自定义更新方法。