स्पष्टता के लिए नाम और वस्तुओं को सरल बनाया गया है। मूल अवधारणा वही बना है।रेल में पहले_फिल्टर छोड़ें
मेरे पास तीन नियंत्रक हैं: dog
, cat
, और horse
। ये नियंत्रक सभी नियंत्रक animal
से प्राप्त होते हैं। नियंत्रक animal
में, मैं एक से पहले फिल्टर है कि इस तरह के रूप में एक उपयोगकर्ता प्रमाणित करता है:
before_filter :authenticate
def authenticate
authenticate_or_request_with_http_basic do |name, password|
name == "foo" && password == "bar"
end
end
dog
की show
कार्रवाई में, मैं (प्रमाणीकरण को छोड़) सभी उपयोगकर्ताओं के लिए खुले उपयोग की आवश्यकता है।
मैं dog
के लिए अलग से प्रमाणीकरण लिखने के लिए थे, तो मैं कुछ इस तरह कर सकता है:
before_filter :authenticate, :except => :show
लेकिन चूंकि animal
से dog
इनहेरिट करती है, मैं नियंत्रक-विशिष्ट कार्यों के लिए उपयोग नहीं है। animal
नियंत्रक में show
dog
की कार्रवाई न केवल cat
और horse
की कार्रवाई को प्रमाणीकरण छोड़ देगा। यह व्यवहार वांछित नहीं है।
animal
से विरासत में रखते हुए की कार्रवाई show
कार्रवाई के लिए केवल प्रमाणीकरण को कैसे छोड़ सकता हूं?
'skip_before_filter' को बहिष्कृत किया गया प्रतीत होता है >> [http://apidock.com/rails/ActionController/Filters/ClassMethods/skip_before_filter#1083-deprecated-moved](http://apidock.com/rails/ActionController/ फ़िल्टर/क्लासमेड्स/skip_before_filter # 1083-बहिष्कृत-स्थानांतरित) वे 'skip_filter' का उपयोग करने की अनुशंसा करते हैं जो 'skip_before_filter',' skip_after_filter' और 'skip_around_filter' को सभी को एक साथ कॉल कर रहा है। – Bachet
नहीं है .. वे सिर्फ विधि को किसी अन्य वर्ग में ले जाते हैं, http://apidock.com/rails/v3.2.3/AbstractController/Callbacks/ClassMethods/skip_before_filter – Orlando
हाँ इसे –