ฉันกำลังมองหาวิธีที่ดีที่สุดในการลบบันทึกออกจากตาราง ตัวอย่างเช่นฉันมีผู้ใช้ที่มี ID ผู้ใช้อยู่ในหลาย ๆ ตาราง ฉันต้องการลบผู้ใช้นี้และทุกระเบียนที่มี ID ของเขาในตารางทั้งหมด
u = User.find_by_name('JohnBoy')
u.usage_indexes.destroy_all
u.sources.destroy_all
u.user_stats.destroy_all
u.delete
งานนี้และลบข้อมูลทั้งหมดของผู้ใช้จากตารางทั้งหมด แต่ผมได้ยินมาว่าเป็นอย่างมากกระบวนการหนักดังนั้นฉันพยายามdestroy_all
delete_all
มันจะลบผู้ใช้ออกจากตารางผู้ใช้ของเขาเองและid
จากตารางอื่น ๆ ทั้งหมดจะถูกทำให้เป็นโมฆะ แต่จะทำให้ระเบียนนั้นไม่เปลี่ยนแปลง ใครสามารถแบ่งปันสิ่งที่กระบวนการที่ถูกต้องสำหรับการทำงานเช่นนี้?
ฉันเห็นว่าdestroy_all
เรียกใช้destroy
ฟังก์ชันบนวัตถุที่เกี่ยวข้องทั้งหมด แต่ฉันต้องการยืนยันวิธีการที่ถูกต้อง
delete_all
และ 2)destroy_all
สร้างระเบียนทั้งหมดและทำลายระเบียนทีละรายการดังนั้นชุดข้อมูลที่มีขนาดใหญ่มากอาจทำให้ช้าลงอย่างเจ็บปวด