web-dev-qa-db-fra.com

Traitement des erreurs dans ActionCord Transactions?

J'ai besoin de créer une ligne dans la table des billets et des utilisateurs ... Je dois juste savoir comment traiter au cas où la transaction échoue.

@ticket.transaction do
    @ticket.save!
    @user.save!
end
    #if (transaction succeeded)
        #.....
    #else (transaction failed)
        #......
    #end

Sur une note latérale, je voudrais tout juste remercier tous ceux qui participent au débordement de la pile pour aider un designer à apprendre davantage de programmation ... J'apprécie le temps que vous sortez de votre journée pour répondre à des questions N00b comme ceci :)

39
Kevin

Si vous utilisez la sauvegarde! Méthode avec un BANG (point d'exclamation), l'application lancera une exception lorsque la sauvegarde échoue. Vous devrez alors saisir l'exception pour gérer l'échec.

begin
  @ticket.transaction do
    @ticket.save!
    @user.save!
  end
  #handle success here
rescue ActiveRecord::RecordInvalid => invalid
   #handle failure here
end
59
MattMcKnight

je suis aussi un débutant, mais je crois que vous pouvez vérifier @ ticket.Errors et @ user.Errors et valider en fonction de leurs réponses

de plus, la méthode de sauvegarde devrait renvoyer un booléen qui détermine si la sauvegarde a réussi

0
mportiz08