Railsのdeviseでモデル作成後に実行したい3つのバリデーションは? – にょけんのボックス

プログラミング
スポンサーリンク

 

こんにちは、エンジニアにょけん(@nyoken_box)です。

Railsのdeviseで会員登録機能などを実装する場合、ユーザーの入力項目にある程度の制限を設けるとサービスの質が高まります。

例えば、

  1. 名前が空欄では登録できない
  2. パスワードは8文字以上
  3. メールアドレスには「@」がつく

これらを満たしていない場合にエラーを返した方が、サービスとして適切です。

もしメールアドレスに「@」がない状態で登録できてしまったら、肝心のメールが送れませんからね。

というわけで、これらのチェックを実装する方法を紹介します。

※今回はdeviseでUserというモデルを作成した場合を想定しています。

 

presenceで、「そもそも入力されているか?」の検証

“presence”は、「項目に入力がされているか」を検証できます。

例えばnameという項目に入力があるかを検証したければ、街灯のモデルファイルに以下ピンク色のコードを記載しましょう。

app/models/user.rb
class User < ActiveRecord::Base    validates :name, presence: true  end

 

validatesメソッドにpresence: trueという引数を与え、nameという項目を検証してす。

 

lengthで、長さの指定

入力させる内容に、「○文字以下」という指定を付けたい場合があると思います。

lengthを用いると、カンタンに実装できますよ。

emailに「50文字以下」という制限を設ける場合、以下ピンク色のコードを記入しましょう。

app/models/user.rb
class User < ActiveRecord::Base    .    .    .    validates :email,  length: { maximum: 50 }  end  

 

パスワードの文字数制限について

deviseの場合、パスワードはデフォルトで「6〜128文字」で制限がかけられています。

こちらは、「config/initializer/devise.rb」にて変更できます。

ファイルの中ほどに、「config.password_length」という項目があるため、こちらの数字を任意の長さに変えましょう。

 

emailの検証

「メールアドレスに@が含まれるか」「メールアドレスに重複がないか」などの最低限の検証は、実はdevise側ですでに実装してくれています。

便利!

自分で実装する場合は「format」というものを用いるのですが、正規表現などの知識が必要なので高難易度です。

deviseに甘えておきましょう。

スポンサーリンク

Visited 119 times, 1 visit(s) today

コメント

タイトルとURLをコピーしました