मैं यह एक बहुत ही दिलचस्प सवाल पाते हैं। मैं ज़ोर से एक पल के लिए यहाँ सोचने के लिए जा रहा हूँ ...
अंत में, क्या हम साथ सामना कर रहे हैं क्रम कार्यक्षमता का एक विशिष्ट सेट प्राप्त करने के लिए एक डिजाइन पैटर्न स्वीकार्य व्यवहार का उल्लंघन करने के लिए एक निर्णय है। तो, हम अपने आप से पूछना चाहिए
1) क्या संभव समाधान है कि नहीं MVC पैटर्न
2) का उल्लंघन होगा क्या संभव समाधान है कि MVC पैटर्न
3 का उल्लंघन होगा रहे हैं) कौन सा विकल्प सबसे अच्छा है? मैं डिजाइन पैटर्न और मानक प्रथाओं को बहुत महत्वपूर्ण मानता हूं, लेकिन साथ ही यदि उन्हें पकड़ना आपके कोड को अधिक जटिल बनाता है, तो सही समाधान अभ्यास का उल्लंघन करना बहुत अच्छा हो सकता है। कुछ लोग मुझ पर असहमत हो सकते हैं।
आइए पहले # 1 पर विचार करें।
मेरे सिर के ऊपर बंद, मैं निम्नलिखित संभव समाधान
ए) क्या तुम सच में, जो इन कार्यों, इस डेटा किसी भी तरह से मॉडल में संग्रहित किया जाना चाहिए प्रदर्शन कर रहा है में रुचि रखते हैं के बारे में सोच है? यह यह जानकारी आपके पर्यवेक्षक को उपलब्ध कराएगी। और इसका यह भी अर्थ है कि आपके ActiveRecord क्लास के किसी अन्य फ्रंट-एंड कॉलर को समान कार्यक्षमता मिलती है।
बी) यदि आप वास्तव में कोई प्रविष्टि बनाने वाले व्यक्ति को समझने में रूचि नहीं रखते हैं, लेकिन वेब क्रियाओं को स्वयं लॉग इन करने में अधिक रुचि रखते हैं, तो आप नियंत्रक कार्यों को "देख" सकते हैं। यह कुछ समय हो गया है क्योंकि मैंने रेल स्रोत के चारों ओर पोक किया है, इसलिए मुझे यकीन नहीं है कि उनके ActiveRecord :: ऑब्जर्वर मॉडल को "देखता है", लेकिन आप इसे नियंत्रक पर्यवेक्षक को अनुकूलित करने में सक्षम हो सकते हैं। इस अर्थ में, आप अब मॉडल को नहीं देख रहे हैं, और उस पर्यवेक्षक को सत्र और अन्य नियंत्रक प्रकार डेटा जानकारी बनाने के लिए यह समझ में आता है। सी) कम से कम "संरचना" के साथ सबसे सरल समाधान, आप अपने एक्शन विधियों के अंत में अपने लॉगिंग कोड को बस छोड़ना है।
अब विकल्प # 2 पर विचार करें, MVC प्रथाओं को तोड़ दिया।
ए) जैसा कि आप प्रस्तावित करते हैं, आप अपने मॉडल पर्यवेक्षक को सत्र डेटा तक पहुंचने के साधन ढूंढ सकते हैं। आपने अपने मॉडल को अपने व्यावसायिक तर्क में जोड़ दिया है।
बी) अपनी परियोजना के बारे में अब और विवरण जानने के बिना यहाँ किसी भी अन्य :)
मेरा व्यक्तिगत झुकाव, के बारे में सोच नहीं कर सकते, या तो 1 ए, मैं देखते हैं अगर रिकॉर्ड करने के लिए लोगों, या 1C अनुलग्न करना चाहते हैं, तो केवल कुछ ही जगहें जहां मुझे ऐसा करने में दिलचस्पी है। यदि आप वास्तव में अपने सभी नियंत्रकों और कार्यों के लिए एक मजबूत लॉगिंग समाधान चाहते हैं, तो आप 1 बी पर विचार कर सकते हैं।
अपने मॉडल पर्यवेक्षक को सत्र डेटा ढूंढना थोड़ा "बदबूदार" है, और यदि आप किसी अन्य परियोजना/स्थिति/संदर्भ में अपने मॉडल का उपयोग करने का प्रयास करते हैं तो संभवतः तोड़ दिया जाएगा।
मैं शायद अपनी सादगी की वजह से हो सकता है 1 ए की तरह कुछ के बारे में सोच रहा था,। – Jaryl