J'ai besoin de créer une ligne dans les deux tickets et la table des utilisateurs ... J'ai juste besoin de savoir comment traiter en cas d'échec de la transaction.Traitement des erreurs dans les transactions ActiveRecord?
@ticket.transaction do
@ticket.save!
@user.save!
end
#if (transaction succeeded)
#.....
#else (transaction failed)
#......
#end
Sur une note de côté, je voudrais simplement remercier tous ceux qui participe à un débordement de pile pour aider un designer en savoir plus ... programmation Je vous remercie du temps que vous les gars prennent de votre journée pour répondre à des questions comme n00b :) ce
Merci beaucoup Matt, je l'apprécie :) – Kevin
Une transaction comme celle du premier extrait (sans exception de lancement), n'est pas du tout une transaction Rails. Une transaction comme celle du second extrait devrait sauver toutes les exceptions (rescue => e), gérer l'échec et éventuellement lever à nouveau la même exception. – Ando
Désolé Ando, mais il s'agit clairement d'une transaction ActiveRecord, comme en témoigne la méthode "transaction". Le point saillant d'une transaction est que la première action (ticket de sauvegarde) est annulée si la seconde échoue. C'était un exemple très basique pour un nouveau développeur ... évidemment on remplacerait le commentaire par la gestion des échecs. Merci d'avoir partagé votre point de vue sur la gestion des erreurs, mais l'exemple vient de "Agile Web Development avec Rails", comme écrit par l'auteur initial de Rails! Donc, je prendrais une exception à votre caractérisation de quelque chose qui ne jette pas une exception comme non Rails – MattMcKnight