2011-05-01 12 views
5

Necesito agregar algunos métodos simples y acciones cuando un nuevo usuario se registra a través de Devise.¿Cómo personalizo el controlador para registrarme en Devise?

Deseo aplicar un método de notificación que me enviará un correo electrónico.

Quiero usar acts_as_network para pasar un valor de sesión y conectar el nuevo registro a la persona que los invitó.

Cómo personalizo, miré los documentos, pero no estoy del todo claro qué debo hacer ... ¡gracias!

+0

¿Has mirado en este post? http://stackoverflow.com/questions/3546289/override-devise-registrations-controller – mbreining

+0

@feelway, no, no lo he hecho, pero parece prometedor ... Supongo que "super" significa que hereda del controlador Devise? – Angela

+0

Sí. Super ejecutará el código del método heredado. – dombesz

Respuesta

15

Esto es lo que estoy haciendo para anular el controlador Devise Registrations. Necesitaba detectar una excepción que potencialmente se puede lanzar al registrar un nuevo usuario, pero puede aplicar la misma técnica para personalizar su lógica de registro.

app/controllers/diseñar/custom/registrations_controller.rb

class Devise::Custom::RegistrationsController < Devise::RegistrationsController 
    def new 
    super # no customization, simply call the devise implementation 
    end 

    def create 
    begin 
     super # this calls Devise::RegistrationsController#create 
    rescue MyApp::Error => e 
     e.errors.each { |error| resource.errors.add :base, error } 
     clean_up_passwords(resource) 
     respond_with_navigational(resource) { render_with_scope :new } 
    end 
    end 

    def update 
    super # no customization, simply call the devise implementation 
    end 

    protected 

    def after_sign_up_path_for(resource) 
    new_user_session_path 
    end 

    def after_inactive_sign_up_path_for(resource) 
    new_user_session_path 
    end 
end 

Tenga en cuenta que he creado una nueva estructura de directorios en devise/customapp/controllers, donde hice mi versión personalizada de la RegistrationsController. Como resultado, deberá mover las vistas de registro de su dispositivo desde app/views/devise/registrations al app/views/devise/custom/registrations.

También tenga en cuenta que anular la configuración del controlador de Registros le permite personalizar algunas otras cosas, como dónde redirigir a un usuario después de un registro exitoso. Esto se hace anulando los métodos after_sign_up_path_for y/o after_inactive_sign_up_path_for.

routes.rb

devise_for :users, 
      :controllers => { :registrations => "devise/custom/registrations" } 

Este post puede ofrecer información adicional que pueda estar interesado.

Cuestiones relacionadas