ActiveRecord::Base::transactionはrollbackされない。

データベース内の情報の整合性を保つためにtransactionを使うわけだ。
しかし、エラーが発生したら、rollbackされないと意味がない。




しかし、はまってしまう罠がある。
http://underrails.seesaa.net/article/54762314.html
returnを使うケースもそうだし、
begin ~ rescue ~ end使うケースもrollbackがされない。

明示的 raise を使って例外発生する必要がある。
http://www.fraction.jp/log/archives/2008/02/21/ActiveRecord_de_rollback