&pgid
&pgid;
**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/勉強会]]