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

Ruby on Rails 開發實戰(五十二):ActiveRecord 基礎 - 刪除記錄

     編輯:Java 相關知識

ActiveRecord 提供兩組刪除方法,層級與行為不同:

類別層級:delete / delete_all

  • 直接在資料庫層面執行,略過回呼與驗證
  • delete(id) / delete([id1, id2]):依主鍵刪除
  • delete_all(conditions):依條件批次刪除,無條件則全表刪除
  • 回傳值視資料庫適配器而定(如影響筆數),找不到記錄不拋出異常
Order.delete(123)
User.delete([2,3,4,5])
Product.delete_all(["price > ?", @expensive_price])

實例/類別層級:destroy / destroy_all

  • 先讀取記錄實例化模型,再呼叫實例 destroy
  • 觸發回呼(before_destroy、after_destroy)與驗證
  • 物件被凍結,不可再修改
  • 類別方法 destroy(id) / destroy_all(conditions) 回傳無意義資訊
order = Order.find_by_name("Dave")
order.destroy

Order.destroy_all(["shipped_at < ?", 30.days.ago])

選擇建議

一般情況優先使用 destroy,確保業務邏輯(回呼、驗證、關聯級連刪除)完整執行,維護資料一致性。僅在大量資料清理且確定無副作用時考慮 delete。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved