&tag(Rails3/検証);
*目次 [#r8a28180]
#contents
*参考情報 [#nfad1cd9]
-[[Rails3]]

*コントローラーだけで検証できるの? [#maf1a0ed]
-[[railsのバリデーションに今さら喧嘩を売る - screw it!:http://d.hatena.ne.jp/tsuyoshikawa/20090325/1237977001]]
-[[How to validate a search form in ruby on rails? - Stack Overflow:http://stackoverflow.com/questions/13227345/how-to-validate-a-search-form-in-ruby-on-rails]]…noticeを使う。
-できることはできるけどかなり特殊みたい。検索画面でもDBなしのモデルを作ってそれで検証したほうがいいらしい(ほぼその情報しかない)。
-あえてやろうとすれば、とするしかない。
#pre{{
if (エラー発生)
  @person.errors.add(:age, 'が不正です')
end
}}
*エラーメッセージのカスタマイズ [#r8b6ae00]
-ページトップに表示するメッセージは#error_explanation、フィールドごとのエラーは.field_with_errorsでカスタマイズできる。
-twitter-bootstrap-railsを使っている場合、例えば、custom.css.scssというファイルを以下の内容で作るとそれっぽく表示される。
#pre{{
@import "bootstrap_and_overrides";

#error_explanation {
  @extend .alert;
  @extend .alert-error;
  @extend .alert-block;
}

.field_with_errors {
  @extend .control-group.error;
}
}}


*blankとnilの取り扱い [#b50c1787]
-select_tagなどで:include_blankを指定し、これを選択した場合、パラメータとしてブランク("")が渡ってくる。
-データベースにはblankではなくnilを保存したい場合結構やっかいっぽい。[[ruby on rails - Make blank params[] nil - Stack Overflow:http://stackoverflow.com/questions/1183506/make-blank-params-nil]]のように、before_saveなどのフィルタを使って無理やり変換する方法はあるけど、多数保存するときに問題になるかも。
-さらにbefore_saveはvalidationの後で呼ばれるので、そのままだと、allow_nilを指定していても、nilじゃないのでエラーになってしまう。この場合、before_validationで""をnilに変換しないといけない。
-DBに""を保存してもいいという前提にして、allow_nilじゃなく、allow_blankを指定するのが簡単なのかも…。
-DBに""を保存してもいいという前提にして、allow_nilじゃなく、allow_blankを指定するのが簡単なのかも…。[[allow_nilの代わりにallow_blankを使えばいいよ | ひげろぐ:http://higelog.brassworks.jp/?p=150]]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS