मैं एक तालिका से रिकॉर्ड हटाने के लिए सबसे अच्छा तरीका ढूंढ रहा हूं। उदाहरण के लिए, मेरे पास एक उपयोगकर्ता है जिसकी उपयोगकर्ता आईडी कई तालिकाओं में है। मैं इस उपयोगकर्ता और हर रिकॉर्ड को हटाना चाहता हूं जिसमें सभी तालिकाओं में उसकी आईडी है।
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
सभी रिकॉर्ड्स को इंस्टैंट करता है और एक बार में उन्हें नष्ट कर देता है, इसलिए बहुत बड़े डेटासेट के साथ, यह दर्दनाक रूप से धीमा हो सकता है।