Monkey patching su devise

Stavo provando ad alterare il metodo create di
Devise::SessionsController, la prova da console funziona ma quando lo
provo su web il bind non si sposta dall’originale, cosa può essere?

class Devise::SessionsController
original_create = instance_method :create
define_method :create do
redirect_to root_path, :notice => “aaa”
end
end

Personalmente non ho mai usato define_method per riscrivere una action
in un controller.

Ho dovuto aggiungere logica al logout di devise l’altro giorno ed ho
aggiunto un sessions_controller.rb e ridefinito la action aggiunto la
mia riga e poi chiamato super per far fare a devise quel che deve
fare:

class SessionsController < Devise::SessionsController
respond_to :html

def destroy
current_user.reset_game_sessions!
super
end
end

avevo seguito:

nel paragrafo: Configuring controllers

HTH,
Enrico

2012/3/19 Marco M. [email protected]

end


Posted via http://www.ruby-forum.com/.


Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


Enrico T.
Software development and web design
currently working @ http://abc.com.au
Sydney, NSW, Australia
[email protected]
mobile (AU) +00610416748450

Grazie Enrico, hai ragione era anche scritto ma non l’avevo notato.
Utilizzare l’ereditarietà è sempre meglio e non ci sono dubbi ma non
riuscivo a spostare il bind dall’originale per cui ero passato alle
maniere forti

Avevo personalizzato la creazione della sessione e funzionava, ora non
capisco cosa è successo ma non funziona più, neanche la cosa più banale
come questo esempio:

def create
params[:user][:email] = nil
params[:user][:password] = nil
super
end

non ci si dovrebbe mai loggare ed invece, pur eseguendo quel codice, con
credenziali corrette viene effettuato il login, come se devise
memorizzasse le informazioni in anticipo, eppure è sempre la versione
2.0.4 e non ho cambiato nulla.
Forse sono solo stanco e domani tornerà a funzionare?

Era una before filter nell’application controller:

class ApplicationController < ActionController::Base
before_filter :set_current_user
def set_current_user
User.current_user = current_user
end
end

-_-