Tôi đang tìm cách tiếp cận tốt nhất để xóa các bản ghi từ một bảng. Chẳng hạn, tôi có một người dùng có ID người dùng ở nhiều bảng. Tôi muốn xóa người dùng này và mọi bản ghi có ID của anh ấy trong tất cả các bảng.
u = User.find_by_name('JohnBoy')
u.usage_indexes.destroy_all
u.sources.destroy_all
u.user_stats.destroy_all
u.delete
Điều này hoạt động và loại bỏ tất cả các tham chiếu của người dùng khỏi tất cả các bảng, nhưng tôi nghe nói rằng nó destroy_all
rất nặng quá trình, vì vậy tôi đã thử delete_all
. Nó chỉ xóa người dùng khỏi bảng người dùng của chính anh ta và id
từ tất cả các bảng khác được tạo thành null, nhưng để lại các bản ghi nguyên vẹn trong đó. Ai đó có thể chia sẻ quy trình chính xác để thực hiện một nhiệm vụ như thế này không?
Tôi thấy rằng destroy_all
gọi destroy
hàm trên tất cả các đối tượng liên quan nhưng tôi chỉ muốn xác nhận cách tiếp cận chính xác.
delete_all
và 2)destroy_all
khởi tạo tất cả các bản ghi và hủy chúng cùng một lúc, vì vậy với một tập dữ liệu rất lớn, điều này có thể rất chậm.