タスク内容
- Task.6-2 で作成した各モデルに validation の設定をしよう。
- 設定した validation が有効になっているか、テストを実装して確認しよう。
補足
この課題は少しやることが多いので、さらに細かくするなら以下のようなステップでやるのがオススメです。
- 各model に必要な validation をリストアップする
- 各model に validation を追加する
- 各model に追加した validation のテストを実装する
どんな validation が必要なのかは自分で考えてみましょう。完璧ではなくてもいいです。とりあえずこれはあったほうがいいと思うものを追加し、 それを確認するのに必要なテストが何か を考えるほうが大事ですし、時間をかけるべきところです。
0.そもそもvalidation って何?
- 制約に則り、「このデータを保存して良いか」を判断する仕組み
- 制約に引っかかったデータをDBに保存する前に止めるため
- DB整合性を担保するため
- validationでチェックする内容の例
- 同じデータはDBに保存できない
- email,nameに値が入っているか
- 本文やタイトルの文字数が規定を超えないか
- modelにvalidation を記述するのが一般的
- 最終的にデータがmodelに集約されてDBに保存されるから
1. このTaskでやろうとしていること
- validationで何を防ぎたいのか
- 制約に引っかかったデータをDBに保存する前に防ぐ
- なぜ防ぎたい
- DBに制約から外れたデータを保存すると後々バグが起きる
- 例:空の記事のタイトルが残る
- 例:文字数が長すぎる本文でアプリの表示画面が崩れる
- どこでチェックするのか
- modelにvalidationを記述してチェックする
- 画面やAPIなど保存経路が増えても、同じルールで止められるため
- なぜ今これをやるのか
- 先にルールを決めておくと、今後のCRUD処理で手戻りすることが少なくなるから
2. 処理の流れ