2012-10-10 7 views
29

आप रेलवे तरीके से कैसे लिखते हैं? मेरे पास एक मॉडल है - प्रबंधक। मैं प्रबंधक से सभी रिकॉर्ड्स को हटाना चाहता हूं जो कि प्रबंधक_लेवल 5 की स्थिति को पूरा करते हैं।रेल - सभी शर्तों को हटाएं जो एक शर्त से मिलते हैं

धन्यवाद।

उत्तर

58

मुझे लगता है कि यह हटाने की बजाय नष्ट उपयोग करने के लिए बेहतर है:

Manager.where(:manager_level => 5).destroy_all 
+5

निश्चित रूप से मान्य है, लेकिन ध्यान रखें: "प्रत्येक रिकॉर्ड को तत्काल करके और इसकी नष्ट विधि को कॉल करके रिकॉर्ड मिलान की स्थिति को नष्ट कर देता है।" (http://apidock.com/rails/ActiveRecord/Relation/destroy_all) यह बड़े परिणाम सेट के लिए बहुत धीमा हो सकता है। –

+0

हाँ, मैं मॉडल को लगातार और सामान रखने के बारे में सोच रहा था। – MurifoX

+4

@MurifoX - क्या आप समझ सकते हैं कि क्यों नष्ट करना नष्ट करने से बेहतर है? अनिवार्य रूप से असहमत नहीं है, लेकिन यह आपके उत्तर को और अधिक पूरा करने में मदद करेगा। –

12

यह काम करना चाहिए:

Manager.where(:manager_level => 5).delete_all 

नोट: यह निर्भर रिकॉर्ड नहीं निकाला जाएगा।

23

इस प्रयास करें:

Manager.delete_all(manager_level: 5) 
+0

1. मैं क्या नष्ट करने के लिए निर्दिष्ट करने के लिए एक चर का उपयोग करने की जरूरत है। 2. तालिका में कोई अनुक्रमणिका नहीं है, यह 2 अन्य तालिकाओं के बीच एक कनेक्टर तालिका है। –

+0

मेरे लिए काम नहीं किया। रेफरेंसियल अखंडता के कारण एक त्रुटि हुई थी। –

+0

यह स्वीकार्य उत्तर होना चाहिए, क्योंकि अन्य प्रश्न हटाने से पहले चयन करने का प्रयास करते हैं - बड़े डेटासेट पर प्रदर्शन समस्याओं का कारण बनता है। – toobulkeh

संबंधित मुद्दे