Forum: Italian Ruby user group Monkey patching su devise

Eff93e9bbe063b7136c9b6f218071a09?d=identicon&s=25 Marco Mastrodonato (marcomd)
on 2012-03-19 12:51
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
0e7478a2e5af2291956238dba58a77db?d=identicon&s=25 Enrico T. (enrico_t)
on 2012-03-20 02:47
(Received via mailing list)
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:
https://github.com/plataformatec/devise

nel paragrafo: Configuring controllers

HTH,
Enrico


2012/3/19 Marco Mastrodonato <m.mastrodonato@gmail.com>
> end
>
> --
> Posted via http://www.ruby-forum.com/.
> _______________________________________________
> Ml mailing list
> Ml@lists.ruby-it.org
> http://lists.ruby-it.org/mailman/listinfo/ml




--
Enrico Teotti
Software development and web design
currently working @ http://abc.com.au
Sydney, NSW, Australia
enrico.teotti@gmail.com
mobile (AU) +00610416748450

http://teotti.com
Eff93e9bbe063b7136c9b6f218071a09?d=identicon&s=25 Marco Mastrodonato (marcomd)
on 2012-03-20 10:58
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
Eff93e9bbe063b7136c9b6f218071a09?d=identicon&s=25 Marco Mastrodonato (marcomd)
on 2012-04-10 18:57
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?
Eff93e9bbe063b7136c9b6f218071a09?d=identicon&s=25 Marco Mastrodonato (marcomd)
on 2012-04-11 14:06
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

-_-
Please log in before posting. Registration is free and takes only a minute.
Existing account

NEW: Do you have a Google/GoogleMail, Yahoo or Facebook account? No registration required!
Log in with Google account | Log in with Yahoo account | Log in with Facebook account
No account? Register here.