Rails 中未定义的方法 update_attributes

问题描述 投票:0回答:2

在 Rails 中,我想更新我的用户记录。我正在尝试使用这个命令:

@user=User.update_attributes(:name=> params[:name], :user=> params[:username], :pass=> params[:password])

但我总是得到错误:

undefined method `update_attributes' 

更新我的用户的正确方法是什么?

ruby-on-rails rails-activerecord
2个回答
20
投票

update_attributes
是实例方法而不是类方法,因此首先需要在
User
类的实例上调用它。

获取要更新的用户: 例如假设你想更新一个 id 为 1

的用户
 @user = User.find_by(id: 1)
 now if you want to update the user's name and password, you can do

或者

 @user.update(name: "ABC", pass: "12345678")

 @user.update_attributes(name: "ABC", pass: "12345678")

在你的情况下相应地使用它。

有关更多参考,您可以参考Ruby on Rails Guides.

您可以使用

update_all
方法更新所有记录。 这是一个类方法,因此您可以将其称为 以下代码将更新所有用户记录的名称并将其设置为“ABC” User.update_all(name: "ABC")


20
投票

似乎从 Rails 6.1 开始,“update_attributes”方法不再起作用了! 您必须像这样使用“update”方法:

@user=User.update(:name=> params[:name], :user=> params[:username], :pass=> params[:password])
© www.soinside.com 2019 - 2024. All rights reserved.