Tengo dos modelos: usuario y empresa. Ambos se crean de una forma y estoy usando una transacción como esta:La transacción de rieles no se revierte en el error de validación
User.transaction do
@user.save!
@company.user = @user
@company.save!
@user.reload
@user.company = @company
@user.save!
flash[:notice] = "Thank you for your registration."
redirect_to_index
end
El usuario se guarda en la base de datos incluso cuando una de las validaciones de la compañía falla. Intenté agregar el manejo de errores explícito de ActiveRecord :: RecordInvalid pero no ayudó. Pensé que la validación provocaría el error de deshacer la transacción de todos modos. Cualquier ayuda es muy apreciada.
Gracias
¿Qué RDBMS estás usando? ¿Admite transacciones (MyISAM vs InnoDB)? –
Ah, creo que eso es todo. La mayoría de las tablas son innoDB, pero hay algunas myisam. Gracias – Shagymoe
Vea también http://stackoverflow.com/questions/2481806/how-do-i-get-save-no-exclamation-point-semantics-in-an-activerecord-transaction –