रैक मिडिलवेयर कर रहे हैं और ActionCo ntroller फ़िल्टर वास्तव में काफी अलग हैं।
रैक मानक रूबी वेबसर्वर इंटरफ़ेस है। यह इस तरह से काम करने के लिए डिज़ाइन किया गया है कि रैक अनुप्रयोगों या "मिडलवायर" को एक साथ जोड़ दिया जा सकता है, प्रत्येक अनुरोध/प्रतिक्रिया को किसी विशेष तरीके से बदलता है। यदि आप रैक मिडलवेयर बनाते/उपयोग करते हैं तो आपको वास्तव में रेल ऐप तक पहुंचने से पहले अनुरोध को बदलने का मौका मिल रहा है।
ActionController फिल्टर बस से पहले कर रहे हैं/हुक से पहले या रेल में अपने तत्काल नियंत्रक तरीकों के बाद अमल के बाद। ये आपके नियंत्रक विधि से पहले या बाद में तुरंत लागू किए जाएंगे, लेकिन रेल स्टैक के पूरे शेष के बाद।
इसलिए रैक मिडलवेयर और एक्शनकंट्रोलर फ़िल्टर के माध्यम से क्या संभव है में महत्वपूर्ण अंतर हैं, अर्थात्, क्योंकि एक रैक मिडलवेयर आपके एप्लिकेशन कोड से पहले निष्पादित हो रहा है, इसलिए इसे आपके एप्लिकेशन कोड के समान दायरे में निष्पादित नहीं किया जाएगा - जैसे आप अपने ऐप मॉडल आदि का उपयोग करने में सक्षम नहीं होंगे जबतक कि आप उन्हें स्पष्ट रूप से आवश्यकता नहीं करते हैं और आवश्यक प्रारंभिक प्रदर्शन (जैसे डेटाबेस कनेक्शन स्थापित करना) करते हैं।
आप केवल एक विशिष्ट नियंत्रक में तरीकों से पहले अनुरोध के साथ कुछ करना चाहते हैं:
आप, अंगूठे का नियम लिए देख रहे हैं मेरे सिर के ऊपर से यहाँ क्या मैं आपको बता जाएगा , उस नियंत्रक में पहले फ़िल्टर का उपयोग करें।
यदि आप अपने ऐप में सभी नियंत्रक विधियों से पहले अनुरोध के साथ कुछ करना चाहते हैं, और आप जो करना चाहते हैं वह आपके एप्लिकेशन के लिए बहुत विशिष्ट है या आपके एप्लिकेशन कोड पर निर्भर करता है, तो अपने एप्लिकेशन नियंत्रक पर एक फ़िल्टर का उपयोग करें।
यदि आप अनुरोध के साथ सामान्य कुछ करना चाहते हैं, तो अपने आवेदन कोड से बंधे नहीं हैं, और आप कल्पना करते हैं कि यह किसी अन्य ऐप में फिर से उपयोग करने में सक्षम होना अच्छा होगा, एक रैक मिडलवेयर एक होगा बेहतर फिट
आशा है कि मदद करता है।