2012-02-14 11 views

उत्तर

62

यह lib/devise/controllers/helpers.rb1 में है और गतिशील रूप से उत्पन्न होता है (उपयोगकर्ता ही संभव प्रत्यय होता जा रहा है):

def self.define_helpers(mapping) #:nodoc: 
    mapping = mapping.name 

    class_eval <<-METHODS, __FILE__, __LINE__ + 1 
     def authenticate_#{mapping}!(opts={}) 
     opts[:scope] = :#{mapping} 
     warden.authenticate!(opts) if !devise_controller? || opts.delete(:force) 
     end 

     def #{mapping}_signed_in? 
     !!current_#{mapping} 
     end 

     def current_#{mapping} 
     @current_#{mapping} ||= warden.authenticate(:scope => :#{mapping}) 
     end 

     def #{mapping}_session 
     current_#{mapping} && warden.session(:#{mapping}) 
     end 
    METHODS 

    ActiveSupport.on_load(:action_controller) do 
     helper_method "current_#{mapping}", "#{mapping}_signed_in?", "#{mapping}_session" 
    end 
    end 
+0

कृपया देखें http://stackoverflow.com/questions/32237346/what-is-code-for-devise-authenticate-user-after-generated-for-user – Abram

+1

तो मैं इसे स्पष्टता तक कैसे पहुंचा सकता हूं। यह कॉल काम नहीं करता है >> 'देवता :: नियंत्रक :: Helpers.authenticate_user! ' – vipin8169

19

जब आप करने के लिए वसीयत जोड़ने रेल, आप आम तौर पर config/routes.rb में जोड़ देंगे:

devise_for :user 

यह Devise Mapper class में परिभाषित किया गया है।

जो हर संसाधन के लिए Devise.add_mapping कॉल गुजरता devise_for

को वसीयत मॉड्यूल के add_mapping विधि here परिभाषित किया गया है, जो बाद में define_helpers कहता है, जो authenticate को परिभाषित करता है के रूप में अन्य उत्तर में चर्चा की।

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

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