**Ruby on Rails勉強会一覧 [#dd041670]
#ls2(Ruby on Rails)

**第6回勉強会のネタ [#jeadb044]
ネタもとは下記です。

-Module: ActiveRecord::Validations
http://rails.rubyonrails.com/classes/ActiveRecord/Validations.html
-Module: ActiveRecord::Validations::ClassMethods
http://rails.rubyonrails.com/classes/ActiveRecord/Validations/ClassMethods.html
-Class: ActiveRecord::Errors
http://rails.rubyonrails.com/classes/ActiveRecord/Errors.html

**日時 [#g4f8ac7b]
- 2006/10/20(金) 19:30くらい 〜

**参加者 [#u5cc1f6d]
-[[志田]](発表者) ([[アークウェブ:http://www.ark-web.jp]])
-[[竹村]]さん ([[アークウェブ:http://www.ark-web.jp]])
-[[進地]]さん ([[アークウェブ:http://www.ark-web.jp]])


#blikimore

** 動画 [#g3db69c1]
#htmlinsert(study/rails6-1.html)

**概要 [#hff6572b]
-Active Recordは Base#validate (または、validate_on_create や validate_on_update)をオーバーライドで検証コードを書くことで、独自の検証を行なわせることができます。
- これらのメソッドは、オブジェクトの状態を検査し、モデル内の各インスタンス変数が、たとえば、空ではない、与えられた範囲内の値である、ある正規表現にマッチする、などなどの条件にマッチすることを保証します。

** サンプルDB [#d2f3e5b5]
    create_table :people do |t|
      t.column :first_name,   :string
      t.column :last_name,    :string
      t.column :phone_number, :string

** 検証コード [#bb77001a]
app/model/person.rb

 class Person < ActiveRecord::Base
 
   def validate
    errors.add_on_empty(:last_name, "姓をちゃんと入力してください。")
    errors.add_on_empty(:first_name, "名をちゃんと入力してください。")
    errors.add(:phone_number, "電話番号は数字で入力してください。") unless phone_number =~ /[0-9]+/
 
   end
 end
-validateメソッドはsaveメソッドを呼び出す(または、valid? メソッドを呼ぶ)と呼び出されます。
-validate_on_createは、saveの結果そのレコードが新規追加の場合、validate_on_updateは更新の場合に呼ばれます。
**エラーメッセージの追加 [#fbd4191c]
- ActiveRecord::Errors#add
- ActiveRecord::Errors#add_on_empty
- ActiveRecord::Errors#add_on_boundary_breaking

** エラーメッセージの取得 [#h5732a96]
- ActiveRecord::Errors#empty?
- ActiveRecord::Errors#count
- ActiveRecord::Errors#on
- ActiveRecord::Errors#each

 <%- if defined? (@person) -%>
 <h3>エラー結果</h3>
 <div>エラーないですよね? : <%= @person.errors.empty? -%></div>
 <div>エラーの数は? : <%= @person.errors.count -%></div>
 <div>姓に対するエラーは? : <%= @person.errors.on "last_name" -%></div>
 <div>名に対するエラーは? : <%= @person.errors.on "first_name" -%></div>
 <div>電話番号に対するエラーは? : <%= @person.errors.on :phone_number -%></div>
 <div>エラーメッセージ一気にお願いします。: <br />
 <ul>
 <%- @person.errors.each do |attr, msg| -%>
 <li><%= msg -%></li>
 <%- end -%>
 </ul>
 <%- end -%>


** 検証ヘルパー [#r511e740]

#blikifooter(志田)


tag: [[Ruby on Rails>tag/Ruby on Rails]], [[勉強会>tag/勉強会]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

アークウェブのサービスやソリューションはこちら