(3 secs) The problem with returning inside the transaction block is that the lines of code between the yield call and the rescue block are not called.