Ho bisogno di creare una riga in entrambi i ticket e la tabella degli utenti ... Ho solo bisogno di sapere come elaborare nel caso in cui la transazione fallisce.Gestione errori nelle transazioni ActiveRecord?
@ticket.transaction do
@ticket.save!
@user.save!
end
#if (transaction succeeded)
#.....
#else (transaction failed)
#......
#end
Su un lato nota Vorrei solo ringraziare tutti coloro che partecipa al overflow dello stack per aiutare un progettista saperne di più di programmazione ... Apprezzo il tempo che voi ragazzi tirano fuori della vostra giornata per rispondere a domande come n00b questo :)
Grazie mille Matt, lo apprezzo :) – Kevin
Una transazione come quella nel primo frammento (senza generare eccezioni), non è affatto una transazione Rails. Una transazione come quella nel secondo snippet dovrebbe salvare tutte le eccezioni (rescue => e), gestire l'errore ed eventualmente aumentare nuovamente la stessa eccezione. – Ando
Scusa Ando, ma è chiaramente una transazione ActiveRecord, come evidenziato dal metodo "transazione". Il punto saliente di una transazione è che la prima azione (ticket di salvataggio) viene annullata se il secondo fallisce. Questo era un esempio molto semplice per un nuovo sviluppatore ... ovviamente si sarebbe sostituito il commento con la gestione degli errori. Grazie per aver condiviso la tua prospettiva sulla gestione degli errori, ma l'esempio deriva da "Agile Web Development with Rails", come scritto dall'autore iniziale di Rails! Quindi, farei un'eccezione alla tua caratterizzazione di qualcosa che non genera un'eccezione in quanto non Rails – MattMcKnight