2014-02-06 127 views
6

我現在使用Rails 4 現在我想更新我的用戶記錄 我想要使用此命令未定義的方法update_attributes方法4

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

但總是得到了錯誤

undefined method `update_attributes' 

所以如何我可以更新我的用戶 也我想問的是它會更新我的數據庫中的所有用戶?

我想我必須添加一些條件,如where [email protected],但我不知道我怎麼能在軌道上做到這一點!

回答

16

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(名稱:「ABC」)

+0

感謝格爾登Thorat,它現在的工作並且我理解更新軌道 – Astm

+0

+1中記錄的概念,用於表示數組上使用update_all。 update_attributes僅適用於成員而不適用於集合的事實是相當不透明的...... – Jerome

相關問題