libro
www.tuyano.com
初心者のためのRuby on Rails3入門

バリデーションによる値の検証 (1/5)

作成:2012-10-28 18:55
更新:2012-10-28 18:55

■バリデーションの基本

モデルを作ってデータベースを利用する場合、注意しなければならないのが「保管される値の形式」です。「形式」というとわかりにくいでしょうが、要は「正しい形で書かれた値かどうか」ということです。

例えば、年齢の値なのにマイナスになっているとか、必ず入力しないといけない項目がカラになっているとか。そうした「本来、こう設定しないといけないのに、そうなってない」ということはよくあります。そのためにプログラムがうまく動かなかったりすることもあるでしょう。モデルにデータを保存する際、「保存する値は正しく書かれているか」をチェックする機能が必要ですね。

こうした値のチェック機能を「バリデーション」と呼びます。Railsでは、モデルにバリデーションのための機能が用意されています。あらかじめモデルに各項目のバリデーション設定を用意することで、保存時に自動的に値のチェックが行われるようにすることができるのです。

では、実際に簡単なモデルを作って、それを使ってバリデーションの働きを確認しながら説明していきましょう。ここでは、ランチのお店情報を管理する「lunches」というプログラムを作成しましょう。といっても、scaffoldを使うので特に面倒な事はありません。
rails generate scaffold lunches name:string star:integer genre:string memo:text
Railsアプリケーションのディレクトリ内に移動し、上記のコマンドをコマンドプロンプトやターミナルから実行してください。その後、「rake db:migrate」でマイグレーションをしておきましょう。

(※scaffoldについては右を参照 http://libro.tuyano.com/index3?id=1005003

作成したら、 http://localhost:3000/lunches にアクセスして動作を確認しておきましょう。また実際に幾つかダミーのレコードを入れておいてもいいでしょう。


■バリデーションの書き方

バリデーションの設定は、モデル内に記述します。これは以下のような形になります。
class モデル < ActiveRecord::Base
    
    validates :コラム, :設定 => { オプション… }, :設定 => {オプション },……
    
    ……必要なだけ validates を用意……

end
バリデーションは、「validates」というメソッドとして用意されています。第1引数に設定するコラムの名前を指定し、それ以降にバリデーションの設定情報を記述していきます。この第2引数以降の設定情報をどのように記述するか、によって設定されるバリデーションがいろいろと変わるわけですね。

この設定の部分は、「:設定の名前 => 値」という形で記述します。「設定の名前」というのは、使うバリデーションの名前であるとか、そのバリデーションに用意する各種の設定の名前などになります。設定する値は、単なる値のこともありますが、いくつかの設定をハッシュでまとめたものを使うこともあります。

このあたりの書き方は、実際にさまざまなバリデーションを使いながら覚えていくことになるでしょう。設定の項目によって書き方は変化しますので、それぞれの設定の具体的な書き方を覚えていく必要があります。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

※関連コンテンツ

「初心者のためのRuby on Rails3入門」に戻る