इम एक मुद्दा एक रेल has_many स्थापित करने का एक सा होने: के माध्यम से: बहुरूपी रिश्ते।एक रेल has_many नामकरण: के माध्यम से: बहुरूपी रिश्ते
मुझे पता है कि इस विषय पर welldocumented है लेकिन मुझे लगता है कि मेरी समस्या मेरे मॉडल और विदेशी_की नामों के नीचे है जो वाक्यविन्यास के विपरीत है यानी मुझे लगता है कि यह एक "मैं कोड बहुत लंबा देख रहा हूं" मुद्दा कि सिर्फ आंखों के एक और सेट की आवश्यकता है।
class Milestone < ActiveRecord::Base
has_many :responsible_items, :as => :responsibility
has_many :responsible, :through => :responsible_items
end
class ResponsibleItem < ActiveRecord::Base
belongs_to :responsible, :class_name => "User"
belongs_to :responsibility, :polymorphic => true
end
class User < ActiveRecord::Base
has_many :responsible_items, :foreign_key => :responsible_id
has_many :responsibilities, :through => :responsible_items
end
यह ठीक काम करने के लिए, त्रुटि के बिना, चीजों की मील का पत्थर की ओर से लगता है:
वैसे भी मैं निम्नलिखित सेटअप है। टर्मिनल में उदाहरण के लिए मैं लिख सकते हैं:
Milestone.first.responsible
... और एक खाली संग्रह के रूप में मैं उम्मीद थी मिलता है।
हालांकि, चीजों के उपयोगकर्ता पक्ष, चलने से:
User.first.responsibilities
... एक एआर त्रुटि लौट रहा है:
ActiveRecord::HasManyThroughAssociationPolymorphicSourceError: Cannot have a has_many :through association 'User#responsibilities' on the polymorphic object 'Responsibility#responsibility'.
मैं इस मुद्दे संभालने हूँ तथ्य यह है कि के साथ कुछ है मैं उपयोगकर्ता संबंधों का जिक्र कर रहा हूं: जिम्मेदार। क्या यह सही है?
किसी भी मदद की बहुत सराहना की जाएगी, धन्यवाद।
मॉडल है कि बहुरूपी रिश्ते के दूसरी तरफ हैं क्या हैं? क्या यह सिर्फ मील का पत्थर या कोई अन्य मॉडल भी है? और जब आप उपयोगकर्ता कर रहे हैं। सबसे पहले। उत्तरदायित्व क्या आप मील का पत्थर वस्तुओं की उम्मीद कर रहे हैं? संबंधित_to: जिम्मेदारी,: polymorphic => true – Abid
पॉलिमॉर्फिक रिश्ते में अन्य मॉडल होंगे लेकिन मीलस्टोन एकमात्र ऐसा है जिसे मैंने अभी तक बनाया है। जब मैं 'user.first.responsibilities 'करता हूं तो मैं मीलस्टोन ऑब्जेक्ट्स हां की अपेक्षा कर रहा हूं। – Pete
आह ठीक @Abid तुम मुझे अपने प्रश्न के साथ लगता है बनाया है। मैं स्वाभाविक रूप से 'जिम्मेदारियों' के संग्रह को खींचने में सक्षम नहीं हूं: पॉलिमॉर्फिक रिश्ते क्योंकि वे सभी अलग-अलग वस्तुओं से संबंधित हैं। नतीजतन मुझे उपयोगकर्ता मॉडल और राज्य पर अधिक विशिष्ट होना चाहिए कि मैं कौन सी ज़िम्मेदारियों को चाहता हूं यानी 'है_मनी: मीलस्टोन_स्पॉन्सिबिलिटीज:: through =>: जिम्मेदार_इटम्स,: स्रोत =>: ज़िम्मेदारी,: स्रोत_ प्रकार =>' मीलस्टोन ' – Pete