ActiveRecord 提供兩組刪除方法,層級與行為不同:
delete / delete_alldelete(id) / delete([id1, id2]):依主鍵刪除delete_all(conditions):依條件批次刪除,無條件則全表刪除Order.delete(123) User.delete([2,3,4,5]) Product.delete_all(["price > ?", @expensive_price])
destroy / destroy_alldestroybefore_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。