2012-06-12 8 views
25
Post 
    :belongs_to :user 

User 
    :has_many :posts 

En mi flujo de trabajo de suscripción redactan una publicación primero, luego en la página siguiente ingresan su información de usuario para registrarse.Obtiene los mensajes de error de validación sin guardar

# intermediate step, validate that Post is valid before moving on to User creation 
# posts_controller: 

@post = Post.new(params[:post]) 
if @post.valid? 
    # go on to create User 
else 
    render 'new' 
end 

BUT! Los mensajes de error de @post no se crean porque no estoy guardando el modelo de @post. Solo estoy buscando .valid?. ¿Cómo creo los mensajes de error sin guardar?

Respuesta

44

Si entiendo su pregunta correctamente, ¿quiere obtener los errores sin guardar el modelo?

Eso es exactamente lo que está sucediendo. @post.valid?

devolverá verdadero o falso dependiendo de si hay algún error. Si hay errores se agregarán al hash @post.errors.

En la situación en la que desea guardar simplemente llame @post.save Se devolverá verdadero si se ha guardado con éxito o falso si hay errores al rellenar @post.errors en el proceso

+0

Estás en lo correcto. No estaba mostrando @ post.errors correctamente. ¡Gracias! – brittohalloran

5

De acuerdo con documentation, una vez que haya llamado #valid? o #invalid? en un registro, #errors se rellena.

Cuestiones relacionadas