has_and_belongs_to_many और has_many संबंधों के बीच अंतर बताएं। कब और कहां उपयोग करें?has_and_belongs_to_many बनाम है_मनी
उत्तर
जहां तक मुझे याद है सकते हैं, has_and_belongs_to_many
आप एक सरल लुकअप तालिका जो अपने दो मॉडल का संदर्भ देता है।
उदाहरण के लिए,
कहानियां कई श्रेणियों से संबंधित हो सकती हैं। श्रेणियाँ कई कहानियां हो सकती हैं।
Categories_Stories Table
story_id | category_id
has_many :through
आप किसी तृतीय मॉडल है जो जानकारी के विभिन्न अन्य टुकड़े जो मूल मॉडल में से किसी से संबंधित नहीं है स्टोर करने के लिए इस्तेमाल किया जा सकता देता है।
उदाहरण के लिए
व्यक्ति कई पत्रिकाओं की सदस्यता ले सकता है। पत्रिकाओं में कई ग्राहक हो सकते हैं।
इस प्रकार, हम बीच है, जो हमें पहले उदाहरण के लिए इसी तरह की एक तालिका देता है में एक सदस्यता मॉडल है, लेकिन अतिरिक्त गुणों के साथ कर सकते हैं।
Subscriptions Table
person_id | magazine_id | subscription_type | subscription_length | subscription_date
और इसी तरह। यदि आप एक स्वतंत्र इकाई के रूप में संबंध मॉडल के साथ काम करने की जरूरत संबंध के माध्यम से:
अंगूठे का सबसे सरल नियम से है कि आप एक has_many की स्थापना करनी चाहिए। आप रिश्ते मॉडल के साथ कुछ करने की ज़रूरत नहीं है, तो यह एक has_and_belongs_to_many संबंध स्थापित करने के लिए (हालांकि आप डेटाबेस में शामिल होने तालिका बनाने के लिए याद करने की आवश्यकता होगी) सरल हो सकता है। आपको has_many का उपयोग करना चाहिए: यदि आपको शामिल मॉडल पर सत्यापन, कॉलबैक या अतिरिक्त विशेषताओं की आवश्यकता है।
साथ मैं भी जोड़ना होगा तरीकों का एक बहुत आवेषण has_and_belongs_to_many को रेल और has_many के लिए नहीं देखते हैं कि: के माध्यम से ।एसोसिएशन को मूल्यों का संग्रह सौंपने जैसी सभी विधियां, है_मनी के लिए प्रलेखन में दिखाई नहीं दे रही हैं: http://guides.rubyonrails.org/association_basics.html#has_and_belongs_to_many-association-reference के माध्यम से – e3matheus
अंगूठे का मेरा नियम है, क्या मैं यहां चेकबॉक्स की सूची के साथ प्राप्त कर सकता हूं? यदि ऐसा है, तो यह एक habtm संघ है। अगर मुझे रिश्ते के बारे में अधिक जानकारी प्राप्त करने के लिए चेकबॉक्स की आवश्यकता है, तो बस हां/नहीं, यह संबंधित है, फिर has_many का उपयोग करें: के माध्यम से। एचएबीटीएम एक साधारण_फॉर्म संग्रह_चेक_बॉक्स के साथ _ids विधि का उपयोग करने जितना आसान है। Has_many: अक्सर accepts_nested_attributes_for शामिल है।
आप has_many का उपयोग करना चाहिए: अगर के माध्यम से आप में शामिल होने के मॉडल पर सत्यापन, कॉलबैक, या अतिरिक्त विशेषताएँ की जरूरत है। के रूप में करने का विरोध किया stories_categories
- 1. has_and_belongs_to_many
- 2. has_and_belongs_to_many
- 3. has_and_belongs_to_many रिश्ते
- 4. Mongoid has_and_belongs_to_many एसोसिएशन
- 5. has_many: एक has_and_belongs_to_many संघ
- 6. रेल पॉलीमोर्फिक है_मनी
- 7. रेल 3 है_मनी: नामकरण समस्या
- 8. रेल: एक है_मनी/संबंधित_तो रिलेशनशिप
- 9. एक has_and_belongs_to_many रिश्ते में रिकॉर्ड जोड़ें
- 10. सत्यापित करें कम से कम has_and_belongs_to_many
- 11. स्वयं-रेफरेंसियल है_मनी के साथ समस्या: रेल
- 12. सभी ऑब्जेक्ट्स को कोई संबंधित है_मनी ऑब्जेक्ट्स
- 13. एक पॉलिमॉर्फिक स्थापित करना है_मनी: रिलेशनशिप के माध्यम से
- 14. रेल है_मनी: एसोसिएशन टेबल में विभिन्न कॉलम नाम के साथ
- 15. मैं अपने फिक्स्चर को has_and_belongs_to_many संबंध के लिए कैसे सेट अप करूं?
- 16. accepts_nested_attributes_for और has_and_belongs_to_many का उपयोग करने का प्रयास कर रहा है लेकिन जॉइन टेबल को
- 17. अंतिम है_मनी के बाद एसोसिएशन को नष्ट करें: रिकॉर्ड हटा दिया गया है
- 18. रेल के पास है_मनी: के माध्यम से -> क्या मुझे प्राथमिक कुंजी कॉलम रखना चाहिए?
- 19. रेल के लिए आरएसपीसी टेस्ट एक है_मनी: रिश्ते के माध्यम से
- 20. रेल के पास है_मनी: अतिरिक्त फ़ील्ड को सहेजने के माध्यम से
- 21. रेल के पास है_मनी: के माध्यम से - क्या तालिका के माध्यम से स्थितियां हो सकती हैं?
- 22. बनाम बनाम
- 23. : बनाम बनाम ::
- 24. स्पाइडरमोन्की बनाम जावास्क्रिप्ट बनाम बनाम?
- 25. Mercurial: भ्रष्टाचार बनाम रिकॉर्ड बनाम qrecord बनाम शेल्व बनाम प्रत्यारोपण बनाम dirstate बनाम कतार
- 26. LINQ बनाम लैम्ब्डा बनाम अज्ञात तरीके बनाम बनाम
- 27. एनएचबीर्नेट एचक्यूएल बनाम मानदंड बनाम क्वेरीरी बनाम लिंक बनाम। प्रदर्शन
- 28. डीकोड और व्याख्या को बनाम बनाम बनाम बनाम
- 29. इनलाइन बनाम __inline बनाम __inline__ बनाम __forceinline बनाम?
- 30. एपीआई बनाम टूलकिट बनाम फ्रेमवर्क बनाम लाइब्रेरी
ध्यान दें कि मेज की जरूरत है वर्णमाला के क्रम अर्थात categories_stories तालिका में नामित द्वारा करने के लिए - इस सम्मेलन यह काम आसान बनाता है। – Will
धन्यवाद, मैंने अब अपनी पोस्ट बदल दी है – Dan
उन्हें वर्णमाला क्यों होना चाहिए @ विल? – ctilley79