ActiveRecord で Validation (Rails勉強中 #5)

Rails の実装で、ああこれ面白いなー、よさげだなー、と思ったものをメモ。

Rails 勉強中 #0 でも触れたけど、ActiveRecord はモデルクラスでデータの Validation ができます。これはコントローラで Validation する必要がなくなるので、コードが簡略化できて見通しがよくなっていいです。その分モデルのコードが増えますが、元々モデルにはそんなにコードを書かないので、多少増えたところで見通しが悪くなったり、煩雑になったりということはないですし。

また、Validation の処理のしかたもなかなかスマート。例えば、フォームで入力必須項目を設定したい場合には、モデルに

validates_presence_of :email

とか書いておいて、View には

<!-- エラーメッセージ表示部分 -->
<%= error_messages_for(:order) %>

<!-- Email入力フィールド -->
EMail: <%= text_field("order", "email", "size" => 40 ) %>

とか書いておくと、以下の様なエラー画面を勝手に出してくれちゃいます。

エラーメッセージも、

validates_presence_of :email, :message => "can't be blank"

といった感じで任意に設定できますし。validates_presence_of 以外にも様々なヘルパーがありますし(詳しくは Rails本で)、もちろん、自分で任意の Validation コードを書くことも可能です。

また、日本人であれば当然、日本語にするにはどうするんだろう、という疑問を持つと思いますが、 gorou さん作の ActiveHeart や、ヽ( ・∀・)ノきゅまきゅまーさんとこの jscaffold とかがあるので心配無用です。お二方、素敵すぎです。

次回はコールバックとオブザーバについて書こうと思います。ほんとは一気に書こうかと思ったので、このエントリのタイトルは最初「ActiveRecord とコールバックとオブザーバ」だったのですが、力尽きました。