Shinichi Tokunaga
@deepneko
modelでバリデータが実行されるとレコードを保存していいかどうかの判断をして、エラーなら保存をスキップしてcontrollerに伝える。
2010-03-05 09:23:01
Shinichi Tokunaga
@deepneko
お。modelの中でvalidates_numerically_ofとかでチェックしたい値をSymbol宣言しとけばいいだけ。これは便利。
2010-03-05 09:26:30
Shinichi Tokunaga
@deepneko
「validates_numerically_of :n, "不正な数値"」 とかでエラーメッセージも簡単に変えられます。
2010-03-05 09:39:48
Shinichi Tokunaga
@deepneko
scaffoldで作ったならコレだけで大丈夫だけど、一から作ったならちゃんとエラー処理しなきゃダメだよ!
2010-03-05 09:46:25
Shinichi Tokunaga
@deepneko
例えばvalidates_presence_ofで引っ掛かるとIDが保存されないから、本当は/ads/<id>に飛びたかったのに、/ads/にリダイレクトされちゃったりするわけよ。
2010-03-05 09:49:34
Shinichi Tokunaga
@deepneko
この場合は@model.saveがtrueを返したかどうかでりダイレクト先を変えるエラー処理を書かなきゃいけないわけ。
2010-03-05 09:51:16
Shinichi Tokunaga
@deepneko
scaffoldで生成したページのERBファイルがそれぞれあるよね。これをパーシャルというんだけど、同じフォルダにまとめて、一つのERBファイルから呼んであげよう。
2010-03-05 10:22:27
Shinichi Tokunaga
@deepneko
パーシャルのファイル名は頭にアンダースコアをつけるのを忘れずにね!テンプレートとの区別をつけるために必要だよ!
2010-03-05 10:23:29
Shinichi Tokunaga
@deepneko
それだけじゃうまくいかないんだろうなぁと思って見てたら、ここでお決まりの「エラーが起きちゃった!なんで?」である。
2010-03-05 10:31:46
Shinichi Tokunaga
@deepneko
あれ?テーブル同士の関連がまったく定義されてないぞ?と思ってたら、まさにその話が出てきた。本に誘導されている。悔しい。
2010-03-05 10:43:40