Error Handling in ActiveRecord Transactions?

Viewed 32195

I need to create a row in both tickets and users table... I just need to know how to process in case the transaction fails.

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

On a side note I'd just like to thank everyone who participates at stack overflow for helping a designer learn more programming... I appreciate the time you guys take out of your day to answer n00b questions like this :)

2 Answers

If you are using the save! method with a bang (exclamation point), the application will throw an exception when the save fails. You would then have to catch the exception to handle the failure.

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

i'm also a beginner, but i believe that you can check @ticket.errors and @user.errors and validate according to their responses

also the save method should return a boolean that determines if the save was successful

Related