ワシはワシが育てる

週刊少年ジャンプと任天堂のゲームが三度のメシより好きです。

Railsのbefore_saveで値にfalseを設定する時の注意

モデルのbefore_saveで特定のカラムの状況に応じて、booleanの値を設定したい場合、値にfalseを設定してメソッドを終了すると、save自体がエラーなってしまいます。

before_save :hoge
def hoge
  if self.value == 1
    self.boolean_data = false
  end
end

上のような処理の場合、valueが1だと返り値もfalseになってしまい保存に失敗するので注意。(これで1時間くらいハマりました)

解決法は簡単で、false以外の返り値を与えればOKです。