2012-11-24 7 views
2

J'ai Devise gem pour l'authentification de l'utilisateur. Fondamentalement, je veux remplacer registrations_controller.rb dans Devise gem localement. Le code bijou:Comment remplacer l'action du contrôleur de gem Ruby on Rails?

class Devise::RegistrationsController < DeviseController 
    ... 
    def update 
     ...(need to override) 
    end 
end 

Je veux rediriger l'utilisateur vers un autre page si attribut particulier dans edit_form est sélectionné.

Répondre

2

Je vous déconseillerais de contourner cette méthode. Au lieu de cela, jetez un oeil à la Wiki page sur les redirections personnalisées après une modification de profil. Il explique remplacer cette méthode:

def after_update_path_for(resource) 
    user_path(resource) 
end 

Vous pouvez retourner des chemins différents en fonction de votre attribut, donc par exemple

def after_update_path_for(resource) 
    resource.foo? ? foo_path : bar_path 
end 
+0

ça marche grâce. J'ai aussi trouvé cette discussion http://stackoverflow.com/questions/3546289/override-devise-registrations-controller, vient d'ajouter devise_for: users, controllers: {registrations: "registrations"} dans routes.rb et je peux le remplacer –

Questions connexes