2011-01-11 15 views
7

Me gustaría personalizar mi controlador de registros para Devise in Rails. Entiendo que debe crear un controlador como este:Controlador de diseño personalizado

class AccountsController < Devise::SessionsController 
    def create 
    super 
    end 
end 

Bueno, eso es todo muy bien. Pero luego digamos que quiero controlar completamente lo que sucede en mi acción #create. ¿Cómo puedo hacer eso? ¿Cómo creo manualmente un modelo y le paso todos los parámetros? ¿Crearía Account.create (params [: account]) sin problemas? ¿Hay algo interno que deba saber o es mi única opción para llamar al #super dentro de la acción?

Respuesta

5

Mientras cumples sus campos requeridos puede llamar Account.create en su ejemplo, estoy bastante seguro de que los campos obligatorios Idear por defecto están de usuario, contraseña y password_confirmation

Hacemos esto en una pantalla de CRUD la creación de idear usuarios,

@admin = Admin.new(params[:admin]) 
if @admin.save 
    redirect_to admin_admins_path, :notice => 'New Administrator has been added' 
else 
    render :action => "new" 
end 

y que no desea extender el controlador de la sesión diseñar, un controlador de lo normal a ApplicationController está bien o se puede extender diseñar :: RegistrationsController y sobrescribir los métodos que desee ajustar en un registrations_controller.rb archivo

+0

Sí , Gracias. SessionsController era un error tipográfico de copia de seguridad, entiendo que debería ser RegistrationsController. – snitko

1

También puede echar un vistazo a la fuente en Github, si usted quiere estar seguro de que está sobreescribiendo las cosas bien, y estar seguro de que no echa de menos alguno de procesamiento ...

https://github.com/plataformatec/devise/tree/master/app/controllers

+1

P.S. - Tenga en cuenta que la URL especifica la versión 1.3.0. Asegúrese de navegar a la fuente de la versión que está utilizando. – sands

Cuestiones relacionadas