サインイン機能にバリデーションを追加
TECH::CAMPを卒業するまで残すところ後1ヶ月。
平日は帰宅後、休日は1日中最終課題と個人アプリ作成を進める日々です。
今日は、前回実装した、deviseを使用しないサインイン・サインアップ機能に、
バリデーションを追加していこうと思います。
Usersテーブルは
・username
・password_digest
で成り立っています。(created_at などは省略)
以下のようにバリデーションをかけます。
・username
入力必須
15文字以内であること
入力必須
一意性あり
メールアドレスの形になっていること
・password
入力必須
8文字以上であること
実際のバリデーションコード
入力必須は簡単です。モデル(user.rb)に
と書けば、username は入力必須になります。
上記の続きで文字数を制限するには
という風に記入します。
次にメールアドレスの一意性
大文字小文字の区別なく一意でなくてはならないということです。
(今回のアプリでは保存時にメールアドレスを小文字に変換するため)
次にメールアドレスの形になっているかどうか。
こちらは正規表現を用います。(勉強中・・)
\w ・・・英数字
+ ・・・直前の文字が1回以上繰り返される
\-_. ・・・「-」「_」「.」の記号は使用できる
i ・・・大文字小文字を区別しないというオプション
次はこのバリデーション 達についてのテストコード を書いていきます。
まとめ
バリデーションについては、正規表現が一番難しいと思いました。
正規表現理解できればフォーム作成の幅が広がりそう!
しかも、理系っぽくてかっこいい!(わたしは文系)
ので、しっかり勉強しようと思います。
ただ、サイト色々探しては見たもののサンプルコードがワンパターンでどうもなあ・・
お盆休みはステイホームなのでAMAZONで正規表現の本があるかどうか探してみます。