Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
様々なバリデーション
Search
鉄本沙友里
November 16, 2023
88
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
様々なバリデーション
鉄本沙友里
November 16, 2023
Featured
See All Featured
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
530
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Code Reviewing Like a Champion
maltzj
529
40k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
320
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
430
We Have a Design System, Now What?
morganepeng
55
8.4k
Visualization
eitanlees
153
17k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
890
Practical Orchestrator
shlominoach
192
12k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Thoughts on Productivity
jonyablonski
76
5.4k
Transcript
様々なバリデーション 50期A 鉄本 沙友里
・ 名前 鉄本 沙友里 ・ 出身・在住 福井県出身→埼玉県在住 ・ 1歳・0歳の二児の母 ・
仕事 医薬品卸 営業事務(育休中) ・ 好き 子供、紅茶、お酒、カラオケ、映画 2
3 Active Recordモデルに対して、データの検 証を行う機能 データベースに保存する前に… 1.入力チェック 2.書式チェック(データ形式のチェック) 3.妥当性の確認 バリデーションとは お問い合わせ
名前 電話番号 お問い合わせ内容 こうすけ ゆうと 新幹線が大好き。どこで乗れる の? 送信 Active Recordモデル MVCモデルのMに相当。モデルはRailsアプリとデータ ベースの橋渡し役を担っている。
4 種類 内容 presence 値が存在しているか検証する。空文字やnilの場合にエラーとなる。 absence 値が存在しないことを検証する。存在している場合にエラーとなる。 uniqueness 一意性の検証をする。重複している値がある場合にエラーとなる。 numericality
数値を検証する。指定された条件に合わない場合にエラーとなる。 length 文字列の長を検証する。指定された条件に合わない場合にエラーとなる。 format フォーマットを検証する。正規表現を指定して、指定されたパターンに合わない場合にエ ラーとなる。 inclusion 値が含まれているか検証する。指定された値が含まれていない場合にエラーとなる。 exclusion 値が含まれていないか検証する。指定された値が含まれている場合にエラーとなる。 confirmation 2つの値が完全に一致しているか検証する。パスワードの確認などに使用する。 acceptance チェックボックスにチェックされているか検証する。チェックボックスがチェックされてい ない場合にエラーとなる。 標準バリデーション
基本的な書き方 validates :カラム名, 検証ルール 5 • 標準バリデーションの例
6 カスタムバリデーション validateメソッドを使って独自の検証ロジックを書くには、モデル内にメソッドを定義して、その メソッド名をvalidateに渡す。例えば、特定の条件を満たすかどうかをチェックするメソッドを作っ て、それをバリデーションとして登録できる。 must_be_evenというカスタムバリデーションメソッドを定義して、そのメソッドで数値が偶数かど うかを検証している
7 バリデーションの条件 ifやunlessオプションを使って、特定の条件が真の場合だけ、または偽の場合だけバリデーション を実行。これによって、条件に応じてバリデーションを柔軟に制御できる。 ここでは、adult?メソッドが真を返す場合、ユーザーが成人である場合にのみageの数値性を検証。
8 エラーメッセージ バリデーションに失敗したときのエラーメッセージは、validatesメソッドの:messageオプションを 使ってカスタマイズできる。デフォルトのエラーメッセージではなく、わかりやすいメッセージを 設定することが多い。 nameが空の場合に表示されるエラーメッセージをカスタマイズしている。 バリデーションのスキップ saveメソッドを呼び出すときにvalidate: falseを渡すと、バリデーションをスキップして直接保存 できる。
※通常はバリデーションをスキップすることは推奨されない。→セキュリティリスクやデータ品質の低下 この一行で、userオブジェクトをバリデーションをスキップして保存している。
9 コールバック before_saveやafter_saveは、それぞれオブジェクトが保存される前後に実行されるメソッドを登録 するためのコールバック。バリデーションとは別に、保存の流れの中で特定のロジックを実行した いときに使う。 ユーザーが保存される前にnormalize_nameメソッドを呼び出して、名前を正規化している。
10 バリデーションを使用すること・・・ ・データの整合性を確保し、不正なデータがデータベースに保存される ことを防ぐための非常に重要な手段 ・正確かつ安全なデータの取り扱いは、セキュリティおよびアプリケー ションの信頼性向上に直結 ※バリデーションだけでなく、セキュリティ対策全般を包括的に行うことが重要