掲示板の改造 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)を指定する。