Crear registro con pasos

Hola!, quisiera saber como creo un registro (create) con pasos, por
ejemplo el primer paso es colocar datos personales, el segundo tus
direcciones, tercero cc, etc…

para que al final todo lo ingresado sea guardado en un solo registro.

Gracias de ante mano!

Es dificil explicar detalladamente la solucion, pues depende de
detalles especificos de tu problema. Sin embargo, aqui van algunos tips:

  • Usa las validaciones de rails para todos los campos de tu modelo.

  • Provee valores por defecto para todos los campos, y asegurate que
    todos sean validos.

  • Usa “valid?” en los pasos iniciales para validar los campos sin
    guardar el objeto a la base de datos.

  • Usa save en el ultimo paso para guardar los datos

La accion podria ser algo como:

LAST_STEP = 10
def registration_wizard
@model = Model.new(params[:model]) # crear un objeto nuevo cada
vez, junto con todos los atributos
@step = params[:step].to_i
@next_step = params[:next_step].to_i

if @model.valid?
if @next_step = LAST_STEP
if @model.save
flash[:notice] = “Listo, ya fue modificado el modelo”
redirect_to “/” and return
end
else
@next_step = @step + 1
end
end

@next_step ||= @step # Fallaron las validaciones, asi que debemos
volver a mostrar el paso actual

render :action => “registration_step_#{@step}”
end

Como en este caso estas re-generando el modelo en cada paso, tienes
que asegurarte que la vista correspondiente a cada paso incluya todos
los valores, bien sea como campos editables por el usuario, o como
campos escondidos.

Otra opcion es que guardes los datos intermedios como un objeto en la
sesion, para no tener que incluir tantos campos hidden.
Saludos
Damian