2014-09-04 2 views
14

मैं इस है:has_many से ऑब्जेक्ट निकालें लेकिन रेल में मूल रिकॉर्ड को न हटाएं?

Post.paragraphs << new_paragraph 

और मैं आईडी = 3 द्वारा अनुच्छेद हटाने की जरूरत है, तो निम्नलिखित पूरी तरह से रिकॉर्ड को हटाता है:

Post.paragraphs.find(paragraph_id).destroy 
# or 
Post.paragraphs.find(paragraph_id).delete 

मैं सिर्फ has_many संघ से एक पैराग्राफ को हटाने की जरूरत है। मैंने delete और destroy का उपयोग करने की कोशिश की। दोनों विधियां पूरी तरह से संबंधित तालिकाओं से रिकॉर्ड्स हटा देती हैं। मैं उन्हें "कंटेनर" से कैसे हटा सकता हूं?

+0

कृपया ध्यान दें, कि मैं निर्भर दूर करने के लिए भूल गया: नष्ट कर। वैसे भी नीचे दिए गए उत्तरों महान हैं। – valk

उत्तर

32

आप Paragraph वस्तु पर delete विधि का उपयोग नहीं करना चाहिए, लेकिन इसके बजाय इस तरह paragraphs संबंध की हटाने की विधि का उपयोग करें,:

post.paragraphs.delete(Paragraph.find(paragraph_id)) 
+6

आप 'पैराग्राफ' को छोड़ सकते हैं और 'post.paragraphs.delete (paragraph_id)' का उपयोग कर सकते हैं। आप 'फिक्सम' या 'स्ट्रिंग' मानों को पारित कर सकते हैं, यह रिकॉर्ड्स को' आईडी' का जवाब देता है और उन पर 'हटाएं' निष्पादित करता है। –

+1

@ Зелёный यह ids की सरणी के साथ काम करने का एक तरीका है? विधि को हटाने के लिए – valk

+3

@valk पास splat (*) सरणी। कुछ ऐसा: 'सरणी = [1,2,3,4] 'और अब' post.paragraphs.delete (* सरणी) '[इसके बारे में पढ़ें] (http://apidock.com/rails/ActiveRecord/Associations/CollectionProxy/हटाएं) –

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