2012-07-03 11 views
13

मैंने पुस्तक, चौथे संस्करण (http://pragprog.com/book/rails4/agile-web-development-with-rails) के साथ Agile वेब विकास पुस्तक के माध्यम से अपना काम पूरा करना समाप्त कर दिया है, और मॉडल के बीच अभिभावक-बाल संबंध बनाने के तरीके को समझने में कुछ मदद की ज़रूरत है। मैंने कुछ Googling किया और StackOverflow पर चारों ओर poked और आमतौर पर एकल टेबल विरासत और कक्षा तालिका विरासत के बारे में सीखा।मैं रेल में कक्षा-तालिका-विरासत को कैसे कार्यान्वित करूं?

मेरे पास एक संग्रह संग्रह में विभिन्न वस्तुओं के बारे में मेटाडेटा का एक गुच्छा है। अधिकांश मेटाडेटा सभी ऑब्जेक्ट्स के लिए समान है, उदाहरण के लिए, प्रवेश संख्या, शीर्षक, वर्णन, कॉपीराइट इत्यादि। सामान्य मेटाडेटा के अतिरिक्त, मेटाडेटा है जो केवल कुछ प्रकार के आइटमों पर लागू होती है, उदाहरण के लिए, फ़ोटो को रखने की आवश्यकता होती है ट्रैक करें कि आइटम रंग में है या काला और सफेद है; ध्वनि रिकॉर्डिंग को प्रारूप (सीडी, डीएटी, कैसेट टेप, आदि) और अवधि का ट्रैक रखने की आवश्यकता है; पाठ सामग्री को पृष्ठों की संख्या का ट्रैक रखने की आवश्यकता है; आदि

 Class hierarchy 

      Item 
       | 
    +-----------+------------+ 
    |   |   | 
Photo SoundRecording Text 

चूंकि मेरे पास हजारों रिकॉर्ड होंगे, मैंने एकल तालिका विरासत को बहुत अक्षम होने के रूप में अस्वीकार कर दिया है। मैं क्लास टेबल विरासत के विचार को यहां प्रस्तुत करता हूं जैसा कि यहां प्रस्तुत किया गया है: http://martinfowler.com/eaaCatalog/classTableInheritance.html लेकिन मैं इस बात पर उलझन में हूं कि मैं वास्तव में रेल परियोजना पर एक नई रूबी में इसे कैसे लागू करूंगा। क्या मैं कक्षा तालिका विरासत को एक पॉलिमॉर्फिक एसोसिएशन (http://guides.rubyonrails.org/association_basics.html#polymorphic-associations) के रूप में लागू करता हूं या क्या मैं गलत ट्रैक पर हूं?

धन्यवाद।

उत्तर

6

हां। यह

class Business < ActiveRecord::Base 
    belongs_to :biz, :polymorphic => true 
end 

class Restaurant < ActiveRecord::Base 
    acts_as_biz 
end 

इस करने पर निर्भर करता (3 रेल में) यहाँ यह कैसे करना है पर एक बहुत अच्छा ट्यूटोरियल है।

http://techspry.com/ruby_and_rails/multiple-table-inheritance-in-rails-3/

+0

धन्यवाद, इस ट्यूटोरियल लग रहा है समर्थन करता है। – user1002119

0

एक मणि है कि इस सफाई से करता है और यह भी वास्तव में मैं क्या देख रहा था की तरह रेल 5,1

https://github.com/mvdamme/dbview_cti