2012-02-14 15 views

Respuesta

62

Está en lib/devise/controllers/helpers.rb1 y se genera dinámicamente (usuario de ser sólo una de las posibles sufijos):

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

Por favor, consulte http://stackoverflow.com/questions/32237346/what-is-code-for-devise-authenticate-user-after-generated-for-user – Abram

+1

entonces, ¿cómo puedo acceder a él explicity. esta llamada no funciona >> 'Devise :: Controllers :: Helpers.authenticate_user!' – vipin8169

19

Cuando se agrega concebir a raíles, normalmente agregará en config/routes.rb:

devise_for :user 

Esto se define en el Devise Mapper class.

que llama Devise.add_mapping para cada recurso pasa a devise_for

se define método add_mapping del módulo Devise here, que llama posteriormente define_helpers, que define authenticate como se discute en otras respuestas.

Cuestiones relacionadas