Torihaji's Growth Diary

Little by little, no hurry.

個人的に思うActiveRecordのTransaction周りのエラーハンドリングについて

はじめに

タイトル通り。

ActiveRecordってupdate!とかcreate!とかで例外投げられるのは良いものの

じゃあ例外補足する時って

ActiveRecord::RecordNot~~とか色々書いて、横に長くなるのが欠点。

もちろん、例外ごとにきちんと分けるべきなんだろうけど、

特にそんなの求めてないよっていう人はこれが役に立つと思う。

結論

ActiveRecord::ActiveRecordErrorで例外を補足するようにする。

例えば

ActiveRecord::Base.transaction do

end

rescue ActiveRecord::ActiveRecordError =>e

rescue => e

end

みたいにすればやばいエラーは下に、dbの操作に伴う例外は真ん中で補足するようにしてくれる。

終わりに

ちなみになんでActiveRecord::ActiveRecordErrorなのかというと

ActiveRecord::RecordInvalid.ancestors

で出てきたから。

大雑把すぎ、と指摘あるかもしれないが、指摘されたら治すことにしよう。