开发者社区> 问答> 正文

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

宋淑婷 2019-04-09 16:23:39 166

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

def update

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

end

Ruby
分享到
取消 提交回答
全部回答(1)
  • 宋淑婷
    2019-07-17 23:33:01

    您可以结合使用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

    0 0

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题