Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Ruby

एक ActiveRecord मॉडल बहुत मोटा कब होता है?

जब आप रेल ब्लॉग और किताबें पढ़ते हैं, या सम्मेलन वार्ता देखते हैं, तो आप अपने मॉडलों को पतला बनाने के बारे में बहुत कुछ सीखेंगे।

ये तकनीक कमाल की हैं, क्योंकि आपके मॉडल करेंगे संभालने के लिए बहुत बड़ा या जटिल हो जाना। लेकिन क्या आप वास्तव में अपने मॉडल को केवल दृढ़ता, संघों और सत्यापन के लिए जिम्मेदार ठहराना चाहते हैं? आप कैसे तय करते हैं कि आपके ActiveRecord मॉडल में कितना तर्क रहना चाहिए?

पतला। लेकिन भी नहीं पतला।

सक्रिय रिकॉर्ड एक पैटर्न है जो सबसे अच्छा काम करता है जब आपके मॉडल आपके डेटाबेस स्कीमा से निकटता से मेल खाते हैं। यही इसके लिए बनाया गया है! लेकिन इसका क्या मतलब है?

  • अगर कुछ कोड ActiveRecord मॉडल के दृष्टिकोण से काम करता है, तो वह मॉडल में जा सकता है।

  • अगर कुछ कोड काम करता है जो कई टेबल/ऑब्जेक्ट्स तक फैला है, और वास्तव में एक स्पष्ट मालिक नहीं है, तो यह सर्विस ऑब्जेक्ट में जा सकता है।

  • विशेषता जैसी कोई भी चीज़ (जैसे संबद्धता या अन्य विशेषताओं से गणना की गई विशेषताएँ) आपके ActiveRecord मॉडल में जानी चाहिए।

  • यदि आपके पास तर्क है कि एक साथ कई मॉडलों की बचत या अद्यतन को व्यवस्थित करना है, तो इसे एक ActiveModel प्रपत्र ऑब्जेक्ट में जाना चाहिए।

  • यदि कोड मुख्य रूप से एक दृश्य में मॉडल प्रदर्शित करने या स्वरूपित करने के लिए है, तो उसे रेल सहायक या प्रस्तुतकर्ता के पास जाना चाहिए।

उन दिशानिर्देशों से परे, आपको उन्हीं नियमों का उपयोग करना चाहिए जिनका उपयोग आप किसी भी वर्ग को रिफैक्टर करने के लिए करते हैं जो बहुत बड़ा हो रहा है। लेकिन आम तौर पर, आपको कुछ . को छोड़ने के बारे में बुरा नहीं मानना ​​चाहिए आपके ActiveRecord मॉडल में तर्क। वे इसे पाने के लिए हैं!

इसलिए, चूंकि रेल ने सक्रिय रिकॉर्ड पैटर्न चुना है, इसलिए आपके मॉडल में कुछ तर्क होना समझ में आता है। लेकिन रेल ने कुछ क्लीनर के बजाय उस पैटर्न को क्यों चुना?

रूबी क्या करेगी?

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

तो, रूबी के संदर्भ में, सक्रिय रिकॉर्ड बिल्कुल सही डिफ़ॉल्ट पैटर्न है।

मैं ऐसा क्यों कह रहा हूँ?

रूबी को प्रोग्रामर को खुश करने के लिए डिज़ाइन किया गया है। जब इसे सफाई और सुविधा के बीच समझौता करने के लिए मजबूर किया जाता है, तो यह लगभग हमेशा सुविधा चुनता है।

मेरा मतलब है, Array इसके सार्वजनिक एपीआई में सौ से अधिक तरीके हैं। इसका टन . है उन तरीकों के बारे में जो सिर्फ एक दूसरे के उपनाम हैं। क्योंकि कुछ डेवलपर केवल .detect writing लिखना पसंद करते हैं करने के लिए .find

उस संदर्भ में, यह बहुत मायने रखता है कि रेल एक ऐसे पैटर्न के लिए डिफ़ॉल्ट होगा जो कि अधिक लचीला है, या अधिक वस्तु-उन्मुख शुद्धता है। यह रूबी तरीका है। और मुझे यह पसंद है।

जब आपको आवश्यकता हो तो आप हमेशा कुछ अधिक लचीले होने के लिए रिफैक्टर कर सकते हैं। लेकिन फिर, यागनी।


  1. Django में मॉडल में डेटा आयात करना

    इस लेख में, हम यह देखने जा रहे हैं कि डेटा को json फॉर्मेट से मॉडल . में कैसे आयात किया जाए . हम json, csv, xlsx, yml, . से डेटा आयात कर सकते हैं आदि मॉडल के लिए। सबसे पहले, एक Django प्रोजेक्ट और एक ऐप बनाएं। यूआरएल सेट अप करें और कुछ बुनियादी चीजें करें जैसे INSTALLED_APPS में ऐप जोड़ना। एक मॉडल

  1. Django में मॉडल डेटा निर्यात करना

    इस लेख में, हम देखेंगे कि मॉडल डेटा को .csv प्रारूप में कैसे निर्यात किया जाए। कभी-कभी, आपको अपने मॉडल डेटा को .csv . जैसे विभिन्न स्वरूपों में निर्यात करने की आवश्यकता हो सकती है या json या .xlsx आगे के काम या रिपोर्टिंग के लिए। आप किसी प्रकार की स्क्रिप्ट बनाकर ऐसा कर सकते हैं लेकिन मेरे पास ऐसा क

  1. पायथन में Tensorflow के साथ अनुक्रमिक मॉडल का उपयोग कब किया जाना चाहिए? एक उदाहरण दें

    एक अनुक्रमिक मॉडल तब प्रासंगिक होता है जब परतों का एक सादा ढेर होता है। इस स्टैक में, प्रत्येक परत में ठीक एक इनपुट टेंसर और एक आउटपुट टेंसर होता है। यह उपयुक्त नहीं है जब मॉडल में एकाधिक इनपुट या एकाधिक आउटपुट हों। यह उचित नहीं है जब परतों को साझा करने की आवश्यकता हो। यह उचित नहीं है जब परत में एका