10

यह प्रश्न नामांकन शैली पॉलिमॉर्फिक संबंधों के बारे में है।नामांकन बहुलक संबंध अच्छी तरह से

मेरे डेटाबेस में तीन प्रकार के व्यक्ति हैं: एक 'कंपनी', एक ग्राहक, और एक कर्मचारी। तीनों में से प्रत्येक कार्य और घटनाओं, और परियोजनाओं के साथ बहुलक संबंधों में हैं।

रेल गाइड के अनुसार, इस तरह (मैं संक्षिप्तता के लिए कुछ वर्गों हटा दिया है) किया जाएगा:

Person.rb 
has_many :tasks, :as => :taskable 
has_many :events, :as => :eventable 
has_many :projects, :as => :projectable # awkward names 

Task.rb 
belongs_to :taskable, :polymorphic => true 

These lead to the rather strange: 
@person = @task.taskable 

मुझे लगता है कि निम्नलिखित कहीं अधिक व्याकरण और सुरुचिपूर्ण होगा ... होगा यह काम, और यदि हां, तो क्या कोई कारण है कि आधिकारिक स्रोत projectable जैसे शब्दों का उपयोग करते हैं जैसे owner?

Person.rb 
has_many :tasks, :as => :owner 
has_many :events, :as => :owner 
has_many :projects, :as => :owner 

Task.rb 
belongs_to :owner, :polymorphic => true 

This creates the elegant: 
@person_1 = @task.owner 
@person_2 = @project.owner 
+1

मैंने एसोसिएशन के बारे में रेल गाइड की जांच की और यह कहता है कि: 'belong_to: taskable,: as =>: polymorphic 'गलत है और होना चाहिए:' belong_to: taskable,: polymorphic => true'। – jdoe

+0

@jdoe - मैंने इसे प्रतिबिंबित करने के लिए कोड को सही किया है। जांच के लिए धन्यवाद। – sscirrus

उत्तर

4

मैं व्यक्तिगत रूप से इसे यथासंभव सामान्य रखने की कोशिश करता हूं।

तो :as => :owner मुझे और अधिक समझ में आता है।

संदेह होने पर, मैं सिर्फ प्रयोग करेंगे

:as => :parent 

जो मैं पहले से ही कुछ परियोजनाओं में देखा है।