バリデーションとは
テーブルに格納するデータに制限を設けること。
具体的に使用する場面の例としては、
- 会員登録においてパスワードはn文字以上でなくてはならない
- 会員登録においてメールアドレスは既存のアカウントと重複してはならない
- 投稿においてタイトルは必須なので空は受け付けない
等の要望を実現するもの。
よく使いすぎるバリデーションの種類
バリデーションの種類を少しだけ紹介。
自分が色々経験積んだらまた追加していくなり別記事にまとめるなりするつもり。
-
データが存在するかどうか
入力必須項目かどうか。
presence: true
-
データが一意かどうか
既存のデータと重複する内容ではないか。
uniqueness: true
-
文字数制限
「n文字以上」や「n文字以下」といった制限を加える。
# 8文字以上
length: {minimum: 8}
# 20文字以下
length: {maximum: 20}
バリデーションをかけてみる
制限をかけたいデータが所属するテーブルに結びついたモデルファイルに処理を記述する。
ユーザーのパスワードに制限を加えたい場合、そのパスワードはUsersテーブルに格納されるので
app/models/user.rbに記述することになる。
validates :カラム名, {バリデーション名: [制限をかけるかどうかをtrue or falseで]}
# 例 nameカラムに空を受け付けないバリデーションをかける
validates :name, {presence: true}
# 例 1つのカラムにバリデーションを複数かける
validates :email, {presence: true, uniqueness: true}