掲示板の改造 3日目

バリデーション機能の追加

さて、ここでまたRoRに戻って掲示板の続きを作ろう。
表示順の変更とデザイン(リスト表示だけだけど)ができたので、今度は入力値チェック(バリデーション機能)をつけてみようと思う。

Modelのソースコードに一行追加するだけ

RoRでは標準でバリデーションの機能が搭載されているため、入力項目に対してバリデーションを行いたい場合はModelのソースコードに一行追加するだけでよい。

app/models/article.rb

class Article < ActiveRecord::Base
 validates_presence_of :name, :title, :body
end

この

validates_presence_of

というのは、presenceつまり値が存在するかどうかをチェックする(空白チェック)という意味である。
ここでは、名前、タイトル、本文のすべてに空白チェックをするように指定した。

ためしにこの状態でフォームの各項目に値を入れないで登録しようとすると下記のようなエラーメッセージが表示され、バリデーションが機能していることがわかる。

長さチェックも行う

空白チェック以外にもいくつかバリデーション機能は用意されているようだ。
だたの空白チェックだと、本文が一文字しかないようないたずらでも通ってしまうので、本文に最低文字数制限をつけてみる。

app/models/article.rb

class Article < ActiveRecord::Base
 validates_presence_of :name, :title
 validates_length_of :body, :minimum=>5
end

validates_length_ofを使用する場合は、引数で最低文字数(minimum)や最大文字数(maximum)を指定する。