अपडेट के लिए टिप्पणियां देखें।रेल: कई बहुलक संबंधों में से कई
मैं इस पर एक स्पष्ट और सीधा-आगे जवाब पाने के लिए संघर्ष कर रहा हूं, मुझे आशा है कि इस बार मुझे यह मिल जाएगा! : डी मुझे निश्चित रूप से रेल के साथ सीखने के लिए बहुत कुछ है, हालांकि मैं जिस समस्या का सामना कर रहा हूं उसे समझता हूं और वास्तव में अतिरिक्त सहायता की सराहना करता हूं।
- मेरे पास "टास्क" नामक एक मॉडल है।
- मेरे पास "लक्ष्य" नामक एक अमूर्त मॉडल है।
- मैं लक्ष्य से कार्य के उप-वर्गों के कई उदाहरणों को जोड़ना चाहता हूं।
- मैं एकल तालिका विरासत का उपयोग नहीं कर रहा हूं।
- मैं लक्ष्य के उप-वर्गों के एक मिश्रित परिणाम सेट को वापस करने के लिए बहुलक संबंधों से पूछताछ करना चाहता हूं।
- मैं उन कार्यों को प्राप्त करने के लिए लक्ष्य के उप-वर्गों के व्यक्तिगत उदाहरणों से पूछना चाहता हूं जिनके साथ वे संबंध हैं।
तो, मुझे लक्ष्य के कार्य और उप-वर्गों के बीच कई रिश्तों के लिए एक बहुरूप पोलिमोर्फिक लगता है। और अधिक विस्तार में, मैं सांत्वना (और निश्चित रूप से कहीं और) में इस तरह काम करने के लिए सक्षम हो जाएगा:
task = Task.find(1)
task.targets
[...array of all the subclasses of Target here...]
लेकिन! मान लिया जाये कि मॉडल "स्टोर", "सॉफ़्टवेयर", "कार्यालय", "वाहन" है, जो "लक्ष्य" के लिए मौजूद सभी उपवर्गों हैं, यह अच्छा होगा भी दूसरी दिशा में संबंध पार करने के लिए:
store = Store.find(1)
store.tasks
[...array of all the Tasks this Store is related to...]
software = Software.find(18)
software.tasks
[...array of all the Tasks this Software is related to...]
डेटाबेस बहुरूपी रिश्तों से गर्भित टेबल इस ट्रेवर्सल करने में सक्षम हो गया लगता है, लेकिन मैं एक जवाब जो मेरे लिए बहुरूपी रिश्तों की भावना को हराने खोजने की कोशिश में कुछ आवर्ती विषयों देखें:
- मेरी उदाहरण अभी भी, लोगों को दिखाई देते हैं का उपयोग करना कार्य, सॉफ्टवेयर, कार्यालय, कार्य में वाहन को परिभाषित करना चाहते हैं, जिसे हम तुरंत बता सकते हैं, यह एक बहुलक संबंध नहीं है क्योंकि यह है केवल एक प्रकार का मॉडल देता है।
- अंतिम बिंदु के समान, लोग अभी भी एक ही आकार या रूप में कार्य में स्टोर, सॉफ्टवेयर, कार्यालय और वाहन को परिभाषित करना चाहते हैं। यहां महत्वपूर्ण बात यह है कि संबंध सबक्लासिंग के लिए अंधेरा है। मेरे polymorphs प्रारंभ में केवल लक्ष्य के रूप में बातचीत की जाएगी, न कि उनके व्यक्तिगत उपclass प्रकार के रूप में। कार्य में प्रत्येक उप-वर्ग को परिभाषित करना फिर से बहुलक संबंधों के उद्देश्य से दूर खाना शुरू कर देता है।
- मुझे लगता है कि जॉइन टेबल के लिए एक मॉडल क्रम में हो सकता है, जो मेरे लिए कुछ हद तक सही लगता है सिवाय इसके कि इसमें कुछ जटिलता शामिल है जो मुझे लगता है कि रेलों को दूर करने के लिए तैयार होना चाहिए। मैं इस पर अनुभवहीनता की मांग करता हूं।
यह रेल की कार्यक्षमता या सामूहिक समुदाय ज्ञान में एक छोटा छेद प्रतीत होता है। तो उम्मीद है कि stackoverflow जवाब के लिए मेरी खोज chronicle कर सकते हैं!
मदद करने वाले हर किसी के लिए धन्यवाद!
अपने छह बुलेट बिंदुओं में, उनमें से पांच "मैं एकल तालिका वंशानुक्रम का उपयोग नहीं कर रहा हूँ" अगर आप छठे ड्रॉप प्राप्त करने के लिए तुच्छ कर रहे हैं। नीचे एसटीआई पर अपने बिंदु के बारे में, क्योंकि अतिरिक्त कॉलम वास्तव में आपको बग करते हैं, अतिरिक्त मॉडलों और अन्य मॉडलों के व्यवहार को धक्का देने के लिए प्रतिनिधिमंडल का उपयोग करने पर विचार करें। – austinfromboston
इसे बाहर धक्का देना इसके परिणामस्वरूप है। एसटीआई हालांकि एक विकल्प नहीं है। काश यह था क्योंकि, हाँ ... हर कोई इसका एक बड़ा प्रशंसक है। लेकिन मैं संग्रहित डेटा को एकजुट होना चाहता हूं और लक्ष्य के कुछ अलग-अलग प्रकार होंगे। मुझे अभी भी कुछ हद तक हड़ताली लगता है कि इस तरह मिश्रित संग्रह खींचने का कोई तरीका नहीं है। मेरा डिजाइन काफी ध्वनि लगता है। –
मैं has_many_polymorphs के उपयोग के माध्यम से इच्छित अधिकांश कार्यक्षमताओं को पूरा करने में सक्षम हूं। एक शेष सीमा यह है कि मैं अभी भी अपने माता-पिता (कार्य) में प्रत्येक बहुलक प्रकार को परिभाषित कर रहा हूं। अतिरिक्त समाधानों का स्वागत है, लेकिन मुझे यकीन नहीं है कि रेलवे के नए संस्करण या has_many_polymorphs के अपडेट तक एक समाधान हमारे ऊपर होगा! –