ruby on rails - validate - En los rieles, ¿cómo puedo averiguar qué causó que falle un.save(), aparte de los errores de validación?
ruby on rails guias (5)
Tengo un modelo ActiveRecord que devuelve true
de valid?
(y .errors está vacío), pero está devolviendo false
desde save()
. Si la instancia del modelo es válida, ¿cómo puedo averiguar qué es lo que está causando el error de guardado?
El problema que tuve fue que olvidé agregar la validación al modelo.
class ContactGroup < ActiveRecord::Base
validates_presence_of :name
end
Intenta usar la versión de bang save!
(con un signo de exclamación al final) e inspeccionando el error resultante.
Sí, solucioné este problema asegurándome de que soy verdadero en todas mis devoluciones de llamada before_ * y luego comienza a funcionar :)
Si @user.save
(por ejemplo) devuelve false
, simplemente ejecute esto para obtener todos los errores:
@user.errors.full_messages
Verifica todas tus devoluciones de llamada.
Tuve un problema como este en el que tenía y el método "after_validate" que estaba fallando después de haber realizado un montón de cambios en el modelo. El modelo era válido pero el "after_validate" devolvía false, así que si usé model.valid
, dicho true, pero si lo model.valid
, me dio errores de validación (pasados desde la devolución de llamada after_validate). Fue raro.
Observe el seguimiento de la aplicación y podrá ver qué línea de código está generando la excepción.