首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Ruby on Rails 開發實戰(五十):ActiveRecord 基礎 - 更新記錄

     編輯:Java 相關知識

ActiveRecord 提供多種更新資料的方式,適用於不同情境。

實例儲存:save / save!

  • 已讀取的物件呼叫 save → UPDATE 現有記錄
  • 新建物件呼叫 save → INSERT 新記錄
  • 所有屬性皆會寫入,即使未變更
order = Order.find(123)
order.name = "Fred"
order.save

僅選取部分欄位的物件(如 find_by_sql),儲存時只更新該欄位,但必須包含 id。

單一/多欄位快速更新

order = Order.find(123)
order.update_attribute(:name, "Barney")

order = Order.find(321)
order.update_attributes(:name => "Barney", :email => "barney@bedrock.com")

類別層級更新

# 依主鍵更新單筆,回傳模型
order = Order.update(12, :name => "Barney", :email => "barney@bedrock.com")

# 批次更新多筆,回傳模型陣列
Order.update([1,2,3], [{:name => "A"}, {:name => "B"}, {:name => "C"}])

# 條件更新,回傳受影響筆數(視適配器)
result = Product.update_all("price = 1.1*price", "title like '%Java%'")

save vs save!

方法失敗時行為適用場景
save回傳 false,需自行檢查 errorsController action 內,配合 view 顯示錯誤
save!拋出 ActiveRecord::RecordInvalid 異常需確保儲存成功的腳本、任務、測試
# save 用法
if order.save
  # 成功
else
  # 驗證失敗處理
end

# save! 用法
begin
  order.save!
rescue ActiveRecord::RecordInvalid => error
  # 驗證失敗處理
end
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved