Saya mencari pendekatan terbaik untuk menghapus catatan dari sebuah tabel. Sebagai contoh, saya memiliki pengguna yang ID pengguna di banyak tabel. Saya ingin menghapus pengguna ini dan setiap catatan yang memiliki ID-nya di semua tabel.
u = User.find_by_name('JohnBoy')
u.usage_indexes.destroy_all
u.sources.destroy_all
u.user_stats.destroy_all
u.delete
Ini berfungsi dan menghapus semua referensi pengguna dari semua tabel, tapi saya dengar destroy_all
itu sangat berat, jadi saya mencoba delete_all
. Itu hanya menghapus pengguna dari tabel penggunanya sendiri dan id
dari semua tabel lainnya dibuat nol, tetapi meninggalkan catatan di dalamnya. Dapatkah seseorang membagikan apa proses yang benar untuk melakukan tugas seperti ini?
Saya melihat bahwa destroy_all
memanggil destroy
fungsi pada semua objek terkait tetapi saya hanya ingin mengkonfirmasi pendekatan yang benar.
delete_all
, dan 2)destroy_all
instantiate semua record dan hancurkan mereka satu per satu, jadi dengan dataset yang sangat besar, ini bisa sangat lambat.