Necesito crear una fila en la tabla de tickets y usuarios ... Solo necesito saber cómo procesarla en caso de que la transacción falle.¿Error al manejar las transacciones de ActiveRecord?
@ticket.transaction do
@ticket.save!
@user.save!
end
#if (transaction succeeded)
#.....
#else (transaction failed)
#......
#end
En una nota Sólo me gustaría dar las gracias a todos los que participan en el desbordamiento de pila para ayudar a un diseñador de aprender más programación ... Agradezco el tiempo que ustedes sacar de su día para responder preguntas como n00b :) este
Muchas gracias Matt, lo agradezco :) – Kevin
Una transacción como la del primer fragmento (sin tirar excepciones), no es una transacción de Rails en absoluto. Una transacción como la del segundo fragmento debe rescatar todas las excepciones (rescue => e), gestionar el error y posiblemente volver a plantear la misma excepción. – Ando
Lo siento, Ando, pero claramente es una transacción de ActiveRecord, como lo demuestra el método "transacción". El punto sobresaliente de una transacción es que la primera acción (ticket de guardado) se revierte si la segunda falla. Este fue un ejemplo muy básico para un nuevo desarrollador ... obviamente uno reemplazaría el comentario con el manejo de fallas. Gracias por compartir su perspectiva sobre el manejo de errores, pero el ejemplo proviene de "Desarrollo web ágil con rieles", tal como lo escribió el autor inicial de Rails. Así que me gustaría hacer una excepción en su caracterización de algo que no arroja una excepción como no Rails – MattMcKnight