ActiveRecordのクラスで、before_* コールバック がfalseを返すと、以降の処理がキャンセルされてしまうから、saveもされなくなる。
Rubyのメソッドは最後に評価された式が返り値になるから、うっかりコールバックがfalseを返してしまい、saveで変更が保存されず、「どうしてなのか?」とはまることがある。
そういう時は明示的にメソッドを
true
で終わるようにする。
after_* コールバックがfalseを返す場合も、以降のコールバックがキャンセルされてしまう。
If a before_* callback returns false, all the later callbacks and the associated action are cancelled. If an after_* callback returns false, all the later callbacks are cancelled. Callbacks are generally run in the order they are defined, with the exception of callbacks defined as methods on the model, which are called last.