Railsの検証機能
1.検証機能の追加
入力項目に対し桁数チェックであるとか、ニューメリックチェックであるとか様々なチェックを行うことが多いが、Railsにはこれらの検証機能としてvaildationが用意されています。
プロジェクトproj001を実例として取り上げ検証機能を付加してみましょう。
app/models/address.rbを編集します。
/app/models/address.rb |
|
意味はつぎの通りです。
■ validates_presence_of :namae, :yubin, jusho, denwa
指定されたフィールドは必須項目。未入力ならエラー。
検証フィールド名は、カンマで区切って複数指定できる。
■ validates_uniqueness_of :namae
データベースのテーブルのnamaeフィールドの値と重複していなければOK。重複していたらエラー。
■ validates_length_of :namae, :maximum => 12
最大12文字までOK。12文字を超えたらエラー。
■ validates_length_of :yubin, :within => 3..8
3文字から8文字までOK。それ以外はエラー。
■ validates_numericality_of :kakaku
数値の入力であればOK。数値に変換できない文字列はエラー。
■ validates_format_of :denwa, :with => /\d{3}-\d{3}-\d{4}|\d{4}-\d{2}-\d{4}/
数字3桁−数字3桁−数字4桁または数字4桁−数字2桁−数字4桁ならOK。異なっていればエラー。
正規表現を利用すれば、相当広範囲なことが検証可能になる。
このほかにも様々な検証が用意されているが、実用的なものを紹介します。
■ validates_confirmation_of :password
入力確認用のチェックフィールドで、_confirmation というアクセサが自動生成される。
■ validates_format_of :email, :with => /[^@]+@[^@\.]+\.[^@\.]+/
メールアドレスのチェック。
■ validates_exclusion_of :password :in => /^\d+$/, :message => '数字のみは危険です'
指定された値の範囲外はエラー。メッセージを表示する。
「^\d+$」とは最初から数字が続いて最後までという正規表現。
2.実行
すべてのフィールドを空白のまま新規登録してみましょう。
エラーメッセージが表示されます。
 
3.エラー表示の色変更
標準では赤色でエラーの箇所が表示されますが、アプリケーションによっては他の色に変えたいこともあります。
・/public/stylesheets/scaffold.cssを変更します。
/public/stylesheets/scaffold.css |
|
4.実行
色が変わったことが分かります。