2012-08-06 11 views
5

कभी-कभी परिवर्तनों को तोड़ने का कारण एक्शनडिस्चैच :: सत्र :: सत्र रीस्टोर त्रुटि अपवाद। यह इस तरह से कुछ करने के लिए करने के लिए स्वचालित रूप से स्पष्ट अमान्य सत्र सक्षम होने के लिए बहुत अच्छा होगा:एक्शनडिस्चैच :: सत्र :: सत्र रीस्टोर त्रुटि बचाया जा सकता है?

class ApplicationController < ActionController::Base 
    rescue_from ActionDispatch::Session::SessionRestoreError do |exception| 
    reset_session 
    redirect_to :home 
    end 
end 

यह काम नहीं करता है - मैं यह सोचते हैं रहा हूँ क्योंकि अपवाद कम ActionDispatch परत में हो रहा है। क्या इन त्रुटियों से ठीक होने का कोई तरीका है?

+1

मुझे लगता है कि सत्र एक मिडलवेयर में चेक किए जाते हैं, यह वह जगह है जहां आपको – apneadiving

+0

देखना चाहिए, अपने नियंत्रकों के लिए इनहेरिटेड स्रोतों का उपयोग करते समय अजीब समस्या, नामस्थान में होने और किसी अन्य नामस्थान के अंदर संसाधन वर्ग को कॉल करने से यह त्रुटि होती है। 'defaults resource_class के बजाय: प्लस :: जो कुछ भी मुझे' defaults resource_class का उपयोग करना था: :: प्लस :: जो भी ' – MrYoshiji

उत्तर

7

यह कर सकता है। मजबूत समाधान पीछा कर रहा है:

  1. ओपन config/initializers/secret_token.rb
  2. बदलें मूल्य YourApp::Application.config.secret_token के लिए, उदाहरण के लिए कुछ और
  3. पुनः प्रारंभ रेल सर्वर

करने के लिए पिछले चार की जगह मैं जानता हूँ कि यह सीधे प्रश्न में समस्या का समाधान नहीं करता है और स्वचालित यह अपेक्षाकृत कठिन और नहीं एक बहुत अच्छा विचार है (autorewriting एप्लिकेशन config) , लेकिन यह एक (महंगा) विकल्प हो सकता है।

मैंने इसे सत्र में लिखे बड़े हिस्सों के साथ अनुभव किया ताकि आप किसी भी व्यापक डेटा संग्रहण के खिलाफ अपना सत्र जांच सकें और इसे डेटाबेस में घुमा सकें।

+2

उत्कृष्ट - इस मुद्दे को काफी समय तक नहीं मिला है, लेकिन यह जानना अच्छा है कि ऐसा कुछ है जो कुछ कर सकता है किया जाना चाहिए, भले ही यह मैनुअल है। –

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