A proposito di exceptions as control flow:
http://playersgonnaplay.it/exceptions-as-control-flow-antipattern-in-rails
Implementare un catch delle eccezioni in un blocco con save!/create! è
relativamente più semplice rispetto al catch dei valori di ritorno delle
chiamate di un blocco con save/create.
Che ne pensate di questa API?
result = ActiveRecord::Base.transaction do |t|
t.try { balance.save }
t.try { deposit.save }
end