あるモデルに以下のようにbooleanの値を設定するbefore_saveを作成しました。
def before_save if age >= 20 a_flag = true c_flag = false end end
これでageが20以上のデータを保存しようとしたら、できなったのです。
エラーログを見ても何もでていません。
気づく人はすぐ気づくのでしょうが、私は無駄に時間を食ってしまいました・・・
これは、以下のようにすれば問題なくなります。
def before_save if age >= 20 a_flag = true c_flag = false true end end
before_saveなどは戻り値としてfalseを返すと、アクションをキャンセルすることができます。
最初のbefore_saveだと、ageが20以上の場合は、最後に実行されるのが
c_flag = false
となり、最後に実行したものがbefore_saveの戻り値になり、この場合はfalseを返してることになっていたので失敗していたという感じでした。
0 件のコメント:
コメントを投稿