2012年9月13日木曜日

before_save はやっぱり使いづらい

before_save は filter としての役割と、hook としての役割の両方が重なっている。それが便利でもあるが、バグを生む原因にもなる。

before_save はそのブロックが false を返すと save の実行自体をやめてしまうというフィルターとしての役割がある。そうとは知らずにsaveの前に実行される hook としてのみ before_save を扱ってしまうと、うっかり before_save が false を返してしまったときに保存されないという痛い目を見る。

まぁそれがメインのモデルならまだ気づきやすいのだが、子供や孫モデルだったりすると発見が遅れてしまう。

0 件のコメント:

コメントを投稿