मुझे लगता है कि मेरा प्रश्न सबसे अच्छा उदाहरण के रूप में वर्णित है। मान लें कि मेरे पास "थिंग" नामक एक साधारण मॉडल है और इसमें कुछ विशेषताएं हैं जो सरल डेटा प्रकार हैं। कुछ ...रेल में एक ही कक्षा के साथ कई संघों के लिए सर्वोत्तम प्रथाओं?
Thing
- foo:string
- goo:string
- bar:int
यह मुश्किल नहीं है। डीबी तालिका में उन तीन विशेषताओं के साथ तीन कॉलम होंगे और मैं उन्हें @ thing.foo या @ thing.bar जैसे कुछ तक एक्सेस कर सकता हूं।
लेकिन समस्या जो मैं हल करने की कोशिश कर रहा हूं वह तब होता है जब "foo" या "goo" अब एक साधारण डेटा प्रकार में निहित नहीं हो सकता है? मान लें कि foo और goo उसी प्रकार की ऑब्जेक्ट का प्रतिनिधित्व करते हैं। यही है, वे अलग-अलग डेटा के साथ "व्हाज़िट" दोनों उदाहरण हैं। तो अब बात ऐसी लग सकती है ...
Thing
- bar:int
लेकिन अब एक नया मॉडल "Whazit" है कि इस तरह दिखता है कहा जाता है ...
Whazit
- content:string
- value:int
- thing_id:int
अभी तक यह सब अच्छा है नहीं है। अब वह जगह है जहां मैं फंस गया हूँ। अगर मेरे पास @thing है, तो मैं इसे व्हाज़ित के अपने 2 उदाहरणों के संदर्भ में कैसे सेट कर सकता हूं (रिकॉर्ड के लिए, "व्यवसाय नियम" यह है कि किसी भी चीज में हमेशा 2 वज़न होंगे)? यही है, मुझे यह जानने की ज़रूरत है कि मेरे पास व्हाज़िट मूल रूप से foo या goo है या नहीं। जाहिर है, मैं वर्तमान सेटअप में @ thing.foo नहीं कर सकता, लेकिन मैं आदर्श हूं।
मेरा प्रारंभिक विचार व्हाज़िट में "नाम" विशेषता जोड़ना है, इसलिए मैं अपने @thing से जुड़े व्हाटज़िट प्राप्त कर सकता हूं और फिर उस नाम से व्हाज़िट को चाहता हूं। हालांकि यह बदसूरत लगता है।
क्या कोई बेहतर तरीका है?