2011-11-16 20 views
5

मेरे पास Search मॉडल और नियंत्रक है। व्यवसाय तर्क यह है कि यदि उपयोगकर्ता का कीवर्ड सटीक किसी उत्पाद के मॉडल नंबर से मेल खाता है, तो उन्हें उत्पाद पृष्ठ पर रीडायरेक्ट करें।अच्छा अभ्यास - मॉडल में पुनर्निर्देशन? - रेल 3.1

इस स्थिति में, क्या मुझे मॉडल के अंदर से केवल पुनर्निर्देशन करना चाहिए (जहां अधिकांश तर्क पहले से ही रहता है)?

या मुझे नियंत्रक को ध्वज या कुछ वापस करना चाहिए ताकि मैं रीडायरेक्ट को संभाल सकूं?

उत्तर

9

वह मॉडल ऑब्जेक्ट उत्तर नहीं दे सकता है, कभी भी रीडायरेक्ट नहीं करेगा। एप्लिकेशन तर्क नियंत्रक का कर्तव्य है, इसलिए यदि उत्पाद मॉडल संख्या से मेल खाता है तो नियंत्रक को मॉडल ऑब्जेक्ट (अनुरोध के परिणामस्वरूप) से पूछना चाहिए, और उसके बाद नियंत्रक रीडायरेक्ट करता है। मॉडल ऑब्जेक्ट को नियंत्रक या विचारों के बारे में कुछ भी नहीं पता होना चाहिए। यह "Model-View-Controller concept" का हिस्सा है जो इसे रेल द्वारा कार्यान्वित किया जाता है।

रेल मॉडल को ActiveRecord pattern के रूप में लागू करता है, इसलिए यह ठीक है कि मॉडल ऑब्जेक्ट डेटाबेस के लिए ज़िम्मेदार है, और इसमें डेटाबेस पर खोज भी शामिल है। मॉडल ऑब्जेक्ट्स की ज़िम्मेदारी में क्या पड़ता है यह देखने के लिए Rails Guides for ActiveRecord Queries में आपके पास कई विकल्प देखें।

+0

क्या मॉडल में run_search फ़ंक्शन होना ठीक है जो सभी डीबी (एकाधिक मॉडलों में) खोजता है या क्या नियंत्रक भी ऐसा करने के लिए सबसे अच्छा है? – Jacob

+0

मैं अपना जवाब विस्तारित करूंगा। – mliebelt

4

हमेशा याद रखें MVC पैटर्न: MVC in Rails

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

संबंधित मुद्दे