开发者社区> 问答> 正文

在没有字段更改的Rails应用程序中防止更新记录

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

def update

if @client.update(client_params)
  redirect_to @client, notice: 'Client was successfully updated.'
else
  render :edit
end

end

展开
收起
小六码奴 2019-04-09 16:23:39 1504 0
1 条回答
写回答
取消 提交回答
  • 您可以结合使用attributes=和changed?方法来实现目标。

    attributes=mass将哈希值分配给模型的实例。 changed?如果模型上的任何值更改了它的值,则返回true。

    请看以下示例:

    [1] pry(main)> u = User.all.sample # this returns a random user
    => #
    [2] pry(main)> u.changed?
    => false
    [3] pry(main)> u.attributes = { email: "bob@test.com" }
    => {:email=>"bob@test.com"}
    [4] pry(main)> u.changed?
    => false
    [5] pry(main)> u.email
    => "bob@test.com"
    [6] pry(main)> u.attributes = { email: "alice@test.com" }
    => {:email=>"alice@test.com"}
    [7] pry(main)> u.changed?
    => true
    [8] pry(main)> u.email
    => "alice@test.com"
    [9] pry(main)> u.save
    => true
    应用于您的代码段时。

    def update
    @client.attributes = client_params

    if @client.changed? && @client.save

    redirect_to @client, notice: 'Client was successfully updated.'

    else

    render :edit

    end
    end

    2019-07-17 23:33:01
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载