वहाँ रिवर्स में बहुरूपी संघों का उपयोग करने के लिए इतना है कि मैं में link_id, picture_id, और code_id क्षेत्रों के लिए की जरूरत नहीं है एक रास्ता है मेरा पोस्ट टेबल?
has_one
का तात्पर्य है कि विदेशी कुंजी अन्य तालिका में है। यदि आपने वास्तव में इस तरह अपना मॉडल परिभाषित किया है, तो आपके पास link_id
, picture_id
, और code_id
आपकी पोस्ट तालिका में नहीं होगा। मुझे लगता है कि आप belongs_to
कहना चाहते थे।
मैं @ post.postable की तरह कुछ करते हैं और बच्चे वस्तु है, जो लिंक में से एक, चित्र, या कोड होगा करना चाहते हैं।
मैं तुम्हें एसटीआई का उपयोग करने और links
, pictures
, और codes
तालिकाओं के संयोजन, तो मॉडल के प्रकार के परीक्षण जब पुन: प्राप्त करने से ऐसा कर सकता है विश्वास करते हैं। हालांकि यह कट्टरपंथी लगता है, और कई अप्रयुक्त कॉलम के साथ समाप्त हो सकता है।
क्या अंतरिक्ष सहेजने के अलावा, अप्रयुक्त आईडी कॉलम को संग्रहीत करने का कोई कारण नहीं है? आप उन्हें रखने के लिए तैयार हैं, तो आप एक आभासी विशेषता है और एक postable_type
स्तंभ निर्धारित कर सकते हैं: (अपरीक्षित कोड, शानदार विफल हो सकता है)
def postable
self.send(self.postable_type)
end
def postable=(p)
self.send(postable_type.to_s+"=",p)
end
क्या यह समझ में आता है कि तस्वीर के पास है: has_many रिश्ता? फिर आप जो भी खोज रहे हैं वह कर सकते हैं .. – Trip