iT邦幫忙

2021 iThome 鐵人賽

DAY 19
0
自我挑戰組

Ruby on Rails JS系列 第 19

Ruby on Rails CRUD 之 U(Update)

更新資料常⽤的有 save 、 update 、 update_attribute 及
update_attributes ⽅法:
先找出 1 號候選⼈

candidate = Candidate.find_by(id: 1)

使⽤ save ⽅法

candidate.name = "剪彩倫"
candidate.save

使⽤ update_attribute ⽅法更新單⼀欄位的值(注意:⽅法名字是單數)

candidate.update_attribute(:name, "剪彩倫")

使⽤ update 更新資料,可⼀次更新多個欄位,且不需要再呼叫 save ⽅法

candidate.update(name: "剪彩倫", age: 20)

使⽤ update_attributes ⽅法

candidate.update_attributes(name: "剪彩倫", age: 20)

以上有幾點需要說明⼀下:

  1. save ⽅法預設會經過驗證(Validateion,在稍後的章節會介紹)流程,如果
    驗證失敗將無法寫入。如果想要跳過驗證,可加上 validates: false 參數。
  2. update 跟 update_attributes 這兩個⽅法其實只是名字不⼀樣,但事實
    上是⼀模⼀樣的內容。
  3. 單數的 update_attribute ⽅法會跳過驗證(Validation),等於是
    save(validate: false) 的效果,所以在使⽤的時候要稍微注意⼀下。
    另外,也可以直接針對整個資料表下⼿:
Candidate.update_all(name: "剪彩倫", age: 18)

這樣就可以⼀⼝氣把所有候選⼈的資料的姓名跟年齡都改成⼀樣的,但這不⾒得是
你想要的結果,所以在使⽤這個⽅法的時候要特別留意。

參考資料

[為你自己學Ruby on Rails]https://railsbook.tw/chapters/08-ruby-basic-4.html


上一篇
Ruby on Rails CRUD 之 R(Read)
下一篇
Ruby on Rails CRUD 之 D(Delete)
系列文
Ruby on Rails JS29

尚未有邦友留言

立即登入留言