आरओआर ट्यूटोरियल ओआरएम के लिए काम करने के लिए प्रति टेबल एक मॉडल प्रस्तुत करता है। मेरी डीबी स्कीमा में कार्यक्षमता के 5 समूहों में संकल्पनात्मक रूप से विभाजित कुछ 70 टेबल हैं (उदाहरण के लिए, कोई भी तालिका एक और केवल एक कार्यात्मक समूह में रहती है, और विभिन्न समूहों की तालिकाओं के बीच संबंध कम हो जाते हैं।) तो: क्या मुझे मॉडल तैयार करना चाहिए प्रति वैचारिक समूह, या क्या मुझे बस 70 रेल मॉडल मिलना चाहिए और समूह को 'वैचारिक' छोड़ देना चाहिए? धन्यवाद!रेल पर रूबी में मॉडल डिजाइन के लिए सर्वश्रेष्ठ अभ्यास
उत्तर
मैं यह सुनिश्चित करके केवल अपने बड़े ऐप्स में से एक में इसे कवर करता हूं कि टेबल/मॉडल अवधारणात्मक रूप से नाम से समूहित होते हैं (लगभग 1: 1 टेबल-मॉडल संबंध के साथ)। उदाहरण:
events
event_types
event_groups
event_attendees
etc...
इस तरह जब मैं TextMate उपयोग कर रहा हूँ या जो कुछ भी, मॉडल फ़ाइलें अच्छी तरह से अल्फा तरह से एक साथ बांटा जाता है। मेरे पास इस ऐप में 80 मॉडल हैं, और यह चीजों को व्यवस्थित रखने के लिए पर्याप्त रूप से काम करता है।
सबसे अधिक संभावना है, आपके पास 70 मॉडल होना चाहिए। आप मॉडलों को 5 नामस्थान रखने के लिए नाम दे सकते हैं, प्रत्येक समूह के लिए एक, लेकिन यह इसके लायक होने से अधिक परेशानी हो सकती है। अधिक संभावना है, आपके पास प्रत्येक समूह में कुछ सामान्य कार्यक्षमता है। उस स्थिति में, मैं प्रत्येक समूह के लिए एक मॉड्यूल बनाउंगा जिसमें इसके व्यवहार शामिल हैं, और प्रत्येक प्रासंगिक मॉडल में शामिल हैं। यहां तक कि यदि कोई साझा कार्यक्षमता नहीं है, तो ऐसा करने से आप अपने वैचारिक समूह के लिए मॉडल को तुरंत पूछ सकते हैं।
धन्यवाद! अचानक मैं समझता हूं कि मैं मॉड्यूल का उपयोग क्यों कर सकता हूं। कुछ और पढ़ने के लिए बंद .. – NickR
सभी ActiveRecord जादू का लाभ उठाने के लिए आपको निश्चित रूप से प्रति तालिका एक मॉडल का उपयोग करना चाहिए।
लेकिन आप अपने मॉडल निर्देशिका में 70 फ़ाइलों को प्रबंधित करने से बचने के लिए मॉड्यूल और उप-निर्देशिकाओं का उपयोग करके अपने मॉडल को नामस्थानों में एक साथ समूहित कर सकते हैं।
उदाहरण के लिए, आप हो सकता है:
app/models/admin/user.rb
app/models/admin/group.rb
के लिए मॉडल व्यवस्थापक :: उपयोगकर्ता और व्यवस्थापक :: समूह
, और
app/models/publishing/article.rb
app/models/publishing/comment.rb
प्रकाशन के लिए
:: अनुच्छेद और प्रकाशन ::
टिप्पणीऔर आगे ...
धन्यवाद! उप-निर्देशिका/नामस्थान एक अच्छा समाधान है। निक – NickR
कुछ छोटे मामले हो सकते हैं जहां आप रेल स्टैंड का उपयोग कर सकते हैं तीसरा एकल-टेबल-विरासत मॉडल। शायद एक विशेष कार्यात्मक समूह में सभी वर्गों में एक ही फ़ील्ड (या लगभग सभी समान) होते हैं। उस स्थिति में, ड्रवाईनेस एसटीआई ऑफ़र का लाभ उठाएं। जब यह समझ में नहीं आता है, हालांकि, कक्षा-प्रति-तालिका का उपयोग करें।
कक्षा-प्रति-तालिका संस्करण में, आप आसानी से आधार वर्ग में सामान्य कार्यक्षमता को खींच नहीं सकते हैं। इसके बजाय, इसे एक मॉड्यूल में खींचें। निम्नलिखित की तरह एक पदानुक्रम उपयोगी साबित हो सकता है:
app/models/admin/base.rb - module Admin::Base, included by all other Admin::xxx
app/models/admin/user.rb - class Admin::User, includes Admin::Base
app/models/admin/group.rb - class Admin::Group, includes Admin::Base
सत्तर टेबल और उनके वैचारिक संबंधों यह एक अच्छा जवाब देने के लिए संभव नहीं है वास्तव में की प्रकृति के बारे में अधिक जानकारी के बिना जाने। क्या ये विरासत सारणी हैं या आपने इसे स्क्रैच से डिज़ाइन किया है?
क्या किसी प्रकार के विरासत पैटर्न से संबंधित टेबल हैं या वे हो सकते हैं? रेल विरासत का एक सीमित रूप कर सकते हैं। सिंगल टेबल विरासत (एसटीआई) देखें।
व्यक्तिगत रूप से, मैं सत्तर टेबल के साथ काम करने से बचने में बहुत प्रयास करता हूं क्योंकि यह बहुत काम है - सत्तर मॉडल & नियंत्रक और उनके 4+ विचार, सहायक, लेआउट, और परीक्षण स्मृति का उल्लेख नहीं करते इंडेक्स में डिजाइन रखने का मुद्दा लोड करें। बेशक मैं उस समय तक भुगतान कर रहा था और पुनरावृत्ति की भरपाई करने के लिए काफी अच्छा था।
यह पहले से ही उल्लेख किया गया है, अपने डेटाबेस स्कीमा आदि को जानने के बिना सभ्य सलाह देना मुश्किल है, हालांकि, मैं 70+ मॉडल बनाने की दिशा में दुबला हूं, (आपकी प्रत्येक तालिका के लिए एक।)
आप कुछ मॉडल को मिटाने में सक्षम हो सकते हैं, लेकिन लागत (नगण्य) के लिए आप उन्हें वहां भी ले सकते हैं।
आपको प्रत्येक मॉडल के लिए नियंत्रक + दृश्य बनाने की आवश्यकता नहीं है (जैसा कि srboisvert द्वारा उत्तर दिया गया है)। आपको केवल प्रत्येक संसाधन के लिए एक नियंत्रक की आवश्यकता है (जिसे मैं 70 से बहुत कम होने की उम्मीद करता हूं - शायद केवल 10 या 15 या तो आपके विवरण द्वारा निर्णय लेना)।
अपने टेबल से प्रत्येक एक "वस्तु" उदाहरण के लिए एक "कार" तालिका माना जाएगा या तालिकाओं के कुछ पकड़े हैं:
एक बनाने 70 मॉडल में कूद से पहले, आप तय करने में मदद करने के लिए इस सवाल का विचार करें उदाहरण के लिए सभी विदेशी कुंजी कॉलम, केवल रिश्ते की जानकारी?
रेल में केवल "ऑब्जेक्ट" टेबल मॉडल बन जाते हैं! (विशिष्ट प्रकार के संगठनों के लिए कुछ अपवाद के साथ) तो यह बहुत संभावना है कि यदि आपके पास कार्यक्षमता के केवल 5 समूह हैं, तो आपके पास 70 मॉडल नहीं हो सकते हैं। साथ ही, यदि आपके द्वारा उल्लिखित कार्यक्षमता के समूह काफी अलग हैं, तो वे अपने स्वयं के ऐप में भी उपयुक्त हो सकते हैं।
- 1. एक रेल ऐप में डेटा वार्तालाप पर सर्वश्रेष्ठ अभ्यास
- 2. रेल पर रूबी: मॉडल
- 3. रेल पर रूबी के लिए स्थान के लिए सर्वश्रेष्ठ आईपी
- 4. रेल पर रूबी में प्रमाणीकरण के लिए सर्वश्रेष्ठ समाधान
- 5. रेल में नेस्टेड संसाधनों के विचारों के लिए सर्वश्रेष्ठ अभ्यास?
- 6. रेल पर रूबी के लिए सर्वश्रेष्ठ होस्टिंग (2012 तक)
- 7. रेल पर रूबी के लिए सर्वश्रेष्ठ लिनक्स डिस्ट्रो?
- 8. रेल पर रूबी में मॉडल का संस्करण
- 9. रेल पर रूबी में दीप मॉडल घोंसले
- 10. ऑटोपॉडेट्स के लिए सर्वश्रेष्ठ अभ्यास
- 11. NSUserDefaults के लिए सर्वश्रेष्ठ अभ्यास
- 12. विंडोज विस्टा के साथ रेल पर रूबी - सर्वश्रेष्ठ सेटअप?
- 13. सर्वश्रेष्ठ अभ्यास
- 14. सर्वश्रेष्ठ अभ्यास
- 15. अच्छा अभ्यास - मॉडल में पुनर्निर्देशन? - रेल 3.1
- 16. सर्वश्रेष्ठ अभ्यास
- 17. सर्वश्रेष्ठ अभ्यास?
- 18. निम्नलिखित परिदृश्य के लिए सर्वश्रेष्ठ डिजाइन पैटर्न
- 19. रेल: उपयोगकर्ताओं के लिए सर्वश्रेष्ठ एसोसिएशन मॉडल -> पोस्ट -> टिप्पणियां मॉडल वेबसाइट के फोरम में?
- 20. सर्वश्रेष्ठ अभ्यास: जेपीए के लिए सर्वश्रेष्ठ डेटाबेस नामकरण सम्मेलन?
- 21. डिजाइन पैटर्न के लिए सर्वश्रेष्ठ वेबसाइटें?
- 22. एनआईओ कार्यान्वयन के लिए सर्वश्रेष्ठ मॉडल?
- 23. गिट में प्रोजेक्ट वेरिएंट के प्रबंधन के लिए सर्वश्रेष्ठ अभ्यास?
- 24. सर्वश्रेष्ठ अभ्यास: केवल पढ़ने के लिए आईसीओलेक्शन
- 25. रेल में डिजाइन पैटर्न
- 26. एंड्रॉइड पर लगातार मोबाइल कनेक्शन के लिए सर्वश्रेष्ठ अभ्यास?
- 27. नई वेब प्रोजेक्ट पर जावास्क्रिप्ट कॉन्फ़िगरेशन के लिए सर्वश्रेष्ठ अभ्यास
- 28. जावास्क्रिप्ट एक रेल अनुप्रयोग में टैग सर्वश्रेष्ठ अभ्यास शामिल करें
- 29. उपयोगिता वर्ग के लिए सर्वश्रेष्ठ अभ्यास?
- 30. बड़ी डब्ल्यूसीएफ सेवा के लिए सर्वश्रेष्ठ अभ्यास?
बेशक- यह समस्या को अच्छी तरह से हल करता है। धन्यवाद! – NickR