2011-09-11 15 views
19

मैं रेल के लिए अपेक्षाकृत नया हूं। । मैं वसीयत की स्थापना की है, और बाद उपयोगकर्ता साइन इन करते कुछ कॉलबैक कोड चलाना चाहते हैंरेलवे ऐप में वार्डन कॉलबैक कहां रखा जाना चाहिए?

Warden wiki page को देखते हुए, मैं उदाहरण के लिए, इस तर्क को करने के लिए "after_set_user" कॉलबैक का उपयोग कर सकते हैं:

Warden::Manager.after_set_user do |user, auth, opts| 
    unless user.active? 
    auth.logout 
    throw(:warden, :message => "User not active") 
    end 
end 

हालांकि, मुझे यकीन नहीं है कि मुझे यह सामान कहां रखा जाना चाहिए। मेरा पहला विचार यह है कि मैं इसे कॉन्फ़िगर/प्रारंभकर्ता/devise.rb में डाल सकता हूं। क्या वो सही है? कॉन्फ़िगरेशन निर्देशिका में अनिवार्य रूप से नियंत्रक कोड क्या है यह सही नहीं लगता है।

+0

एक फिल्टर, "after_set_user" यह है कि ऐसा लगता है, मेरा अनुमान है एक नियंत्रक है। – Bnjmn

+0

दरअसल मुझे "वार्डन कॉन्फ़िगरेशन" नामक प्रारंभकर्ता/devise.rb में एक अनुभाग मिला, इसलिए मुझे लगता है कि इसे रखने के लिए सही जगह _is_ है। –

+0

क्या आपको यह कोड कहां रखा गया था? या आपने इसे किसी भी तरह से डेविस प्रारंभकर्ता की कोड शैली में अनुकूलित किया था? – dgilperez

उत्तर

19

आपका आवेदन बूट होने पर वार्डन हुक की आवश्यकता होने की आवश्यकता है, इसलिए कॉन्फ़िगर/प्रारंभकर्ता/devise.rb पर डेविस के प्रारंभकर्ता के अंदर एक अच्छा उम्मीदवार है।

हालांकि, व्यवहार हासिल करना चाहते हैं बेहतर इस वसीयत सुविधा का उपयोग करके पूरा किया जाएगा:

https://github.com/plataformatec/devise/wiki/How-To:-Customize-user-account-status-validation-when-logging-in

+0

प्रदान किया गया लिंक गुम है। – dgilperez