- バックアップ一覧
- ソース を表示
- Ruby on Rails/第6回勉強会 - ActiveRecord::Validations は削除されています。
- 1 (2006-10-20 (金) 17:17:27)
- 2 (2006-10-20 (金) 20:11:29)
- 3 (2007-01-05 (金) 08:10:43)
rails勉強会一覧 †
'rails' には、下位層のページがありません。
第6回勉強会のネタ †
ネタもとは下記です。
- 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
日時 †
- 2006/10/20(金) 19:30くらい 〜
参加者 †
動画 †
htmlinsert: Specified localfile, ./study/rails6-1.html, does not exist. Specified wiki page, :HTML/study/rails6-1.html, does not exist.
概要 †
- Active Recordは Base#validate (または、validate_on_create や validate_on_update)をオーバーライドで検証コードを書くことで、独自の検証を行なわせることができます。
- これらのメソッドは、オブジェクトの状態を検査し、モデル内の各インスタンス変数が、たとえば、空ではない、与えられた範囲内の値である、ある正規表現にマッチする、などなどの条件にマッチすることを保証します。
サンプルDB †
create_table :people do |t| t.column :first_name, :string t.column :last_name, :string t.column :phone_number, :string
検証コード †
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は更新の場合に呼ばれます。
エラーメッセージの追加 †
- ActiveRecord::Errors#add
- ActiveRecord::Errors#add_on_empty
- ActiveRecord::Errors#add_on_boundary_breaking
エラーメッセージの取得 †
- 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 -%>