0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

パスワード(半角英数混合必須)のバリデーション

Posted at

はじめに

Railsのパスワード設定で保存する際に、
「半角のアルファベットと半角数字が混合でなければならない」場合の
バリデーションを設定する方法について解説します。

※今回はpassword属性に対してバリデーションを実行します。

結論

user.rb
validates :password, format: {
    with: /\A(?=.*?[a-z])(?=.*?[\d])[a-z\d]+\z/i,
    message: 'は英数字の混合である必要があります'
  },on: :create

Userモデルに上記の記述を追加する事で、半角英数混合の
バリデーションを設定することが出来ます。
※今回はon: :createを指定していますが、合わせて解説していきます。

解説

user.rb
validates :属性の名前, format: {

1行目では、validatesでバリデーションを設定する属性の名前を指定します。
今回設定する属性はpassword属性です。
また、format:オプションで正規表現にて特定のパターンについて
合致するか確認してくれます。

user.rb
with: /\A(?=.*?[a-z])(?=.*?[\d])[a-z\d]+\z/i,

2行目では、with:オプションにて正規表現パターンを指定する事が出来ます。
/\A(?=.*?[a-z])(?=.*?[\d])[a-z\d]+\z/i,の部分が正規表現になります。
上記正規表現により、password属性の値が英字と数字の組み合わせであるかを
チェックしてくれます。

user.rb
message: 'は英数字の混合である必要があります'

3行目では、message:オプションにてバリデーションが失敗した時に
表示されるエラーメッセージをしています。

user.rb
},on: :create

4行目のon: :createを設定することでcreateアクションの時のみ
バリデーションが実行されるよう制限することが出来ます。
つまり、既存のレコードの更新時などにはバリデーションは
実行されないという形になります。

補足(正規表現について)

正規表現については知識が浅い為、解説できませんでしたが、
正規表現のチェックを行なってくれるRubularというサイトがあるので
興味がある方は覗いてみて下さい!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?