मेरे पास एक मॉडल है जो Content
आइटम का प्रतिनिधित्व करता है जिसमें कुछ छवियां होती हैं। छवियों की संख्या तय की गई है क्योंकि ये छवि संदर्भ सामग्री के लिए बहुत विशिष्ट हैं। उदाहरण के लिए, Content
मॉडल Image
मॉडल को दो बार (प्रोफ़ाइल छवि, और पृष्ठभूमि छवि) से संदर्भित करता है। मैं एक सामान्य has_many
से बचने की कोशिश कर रहा हूं, और कई has_one
पर चिपक रहा हूं। वर्तमान डेटाबेस संरचना इस तरह दिखती है:रेल के पास है_ऑन बनाम सेमेन्टिक्स
contents
- id:integer
- integer:profile_image_id
- integer:background_image_id
images
- integer:id
- string:filename
- integer:content_id
मैं यह नहीं समझ सकता कि संघों को सही तरीके से कैसे सेटअप किया जाए। Content
मॉडल में Image
के संदर्भों में दो belongs_to
संदर्भ हो सकते हैं, लेकिन यह वास्तव में सामग्री के अंतर्गत आता है, या दूसरे शब्दों में, अर्थात् सही छवि प्रतीत नहीं होता है, सामग्री में दो छवियां होती हैं।
यह (अर्थ विज्ञान तोड़कर) सबसे अच्छा मैं के बारे में सोच सकता है:
class Content
belongs_to :profile_image, :class_name => 'Image', :foreign_key => 'profile_image_id'
belongs_to :background_image, :class_name => 'Image', :foreign_key => 'background_image_id'
end
मैं जिस तरह से बंद इस संघ को प्राप्त करने के लिए एक बेहतर तरीका हूँ, और वहाँ?
सिंगल टेबल विरासत मेरी समस्या के लिए पूरी तरह से काम करता है। क्या आप जानते हैं कि मैं पॉलिमॉर्फिक एसोसिएशन के साथ एसटीआई को कैसे एकीकृत करूं? उदाहरण के लिए, यदि सामग्री के साथ, कुछ छवियां थीं जो दस्तावेज़ मेटाडेटा का हिस्सा थीं, और दोनों - सामग्री और मेटाडेटा छवियों को छवि तालिका में संग्रहीत किया गया था। – Anurag
लेख के लिए बहुत बहुत धन्यवाद। नेट पर रेल के लिए सिंगल टेबल विरासत पर सबसे अच्छा लेख होना चाहिए! – Anurag
'सरल उत्तर' के लिए, सामग्री को कैसे पता चलेगा कि छवियों को संदर्भित करने के लिए यदि उसकी डीबी तालिका में कोई विदेशी कुंजी नहीं है? – greg7gkb