7

पर कई संघों के साथ मैं एक पॉलीमोर्फिक एसोसिएशन के बारे में थोड़ा उलझन में हूं। मुझे हेडर छवि, और कई छवियों के लिए एक आलेख मॉडल की आवश्यकता है, लेकिन मैं एक एकल छवि मॉडल चाहता हूं। मामलों को और भी भ्रमित करने के लिए, छवि मॉडल पॉलिमॉर्फिक है (अन्य संसाधनों को कई छवियों की अनुमति देने के लिए)।पॉलिमॉर्फिक एसोसिएशन एक ही मॉडल

मैं इस संघ का उपयोग कर रहा मेरी अनुच्छेद मॉडल में:

class Article < ActiveRecord::Base 
    has_one :header_image, :as => :imageable 
    has_many :images, :as => :imageable 
end 

यह संभव है? धन्यवाद।

+6

has_one has_many के लिए synctactic चीनी है: सीमा => 1 –

+0

[उसी मॉडल पर एकाधिक संघों के साथ रेल पॉलीमोर्फिक एसोसिएशन] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/2494452/rails-polymorphic-association-with -मल्टी-एसोसिएशन-ऑन-द-मॉडल) –

उत्तर

4

हाँ। यह पूरी तरह से संभव है।

आपको header_image के लिए कक्षा का नाम निर्दिष्ट करने की आवश्यकता हो सकती है, क्योंकि इसे अनुमानित नहीं किया जा सकता है। :dependent => :destroy भी शामिल करें, यह सुनिश्चित करें कि छवियों अगर लेख

class Article < ActiveRecord::Base 
    has_one :header_image, :as => :imageable, :class_name => 'Image', :dependent => :destroy 
    has_many :images, :as => :imageable, :dependent => :destroy 
end 
तो दूसरे छोर पर

निकाल दिया जाता है नष्ट कर रहे हैं ...

class Image < ActiveRecord::Base 
    belongs_to :imageable, :polymorphic => true 
end 
+0

यह बढ़िया है, धन्यवाद! –

+0

मैं पार्टी के लिए पांच साल देर से हूं, लेकिन भविष्य के संदर्भ के लिए [यह प्रश्न और उत्तर] देखें (http://stackoverflow.com/questions/2494452/rails-polymorphic-association-with-multiple-associations-on-the -same मॉडल)। – Sooie

+0

पीस इसे स्वीकार किए गए उत्तर के रूप में रद्द करें। यह समाधान काम नहीं करता है, @Sooie द्वारा ऊपर टिप्पणी देखें। असली समाधान इस प्रकार है: http://stackoverflow.com/questions/2494452/rails-polymorphic-association-with-multiple-associations-on-the-same-model – tommyalvarez

6

मैं इस कोशिश की, लेकिन तब header_image छवियों में से एक रिटर्न । बस क्योंकि छवि तालिका एक अलग छवि उपयोग प्रकार निर्दिष्ट नहीं करता है (header_image बनाम सामान्य छवि)। यह बस कहता है: imageable_type = दोनों प्रयोगों के लिए छवि। इसलिए यदि उपयोग प्रकार के बारे में कोई जानकारी संग्रहीत नहीं है, तो ActiveRecord अंतर नहीं कर सकता है।

+0

आपको एकल तालिका विरासत की आवश्यकता है – BlackTea

संबंधित मुद्दे