見出し画像

deviseを導入した時に、入力してもらうパスワードの最低文字数を変更する方法 @TECH CAMP #19

 どうも、忙しすぎて逆に充実した毎日を送れています、とだです。引越しの準備で忙しい上にプログラミングスクールでの制作物の開発も忙しくて、でも遊びたくて遊んでいます

パスワードの文字数制限をカスタマイズしたい

 さっそく本題です。Webアプリケーションを開発するとして、そのアプリケーションにログイン機能をもたせたい時に「devise」というユーザー管理機能を簡単に実装できる大変便利なgemを導入することがよくあります。この「devise」ではもちろんパスワードも設定するのですが、そのパスワードの文字数の制限を自分でカスタマイズしたい時にどうしたらいいのか、ということについて学んだので小ネタ感覚でアウトプットしようと思います。

1. deviseのデフォルトの設定を変えてしまう、というやり方

  つまりrailsアプリのルートディレクトリ直下のconfigディレクトリにあるdevise.rbファイル(~/config/initializers/devise.rb)を編集するやり方です。
 開発中のアプリケーションのフォルダの~/config/initializers/devise.rbというファイルを開くと、なが〜いコメントアウトが書かれたファイルが見れます。そこのだいたい179~181行目に

# ==> Configuration for :validatable
# Range for password length.
config.password_length = 6..128

という記述が見つかると思います。ここをいじくってやりましょう。デフォルトでは最低6文字の入力を求めていて、最大128文字であることもわかるかと思います。今回開発するアプリケーションで、ユーザーに7文字以上のパスワードの入力を求めるとしたい時は

# ==> Configuration for :validatable
# Range for password length.
config.password_length = 7..128

というように変更すればOKです!こうすればdeviseを使う全てのモデルで同じ条件が適用されます。

2. deviseを使用するモデルに直接記述する、というやり方

 こちらはモデルの方に直接、ヴァリデーションのように記述してしまうというやり方です。例えばよくある「model/user.rb」というモデルに

devise :validatable, password_length: 7..128

と記述してあげればOKです。イメージとしては以下のような感じです。

class User < ApplicationRecord
 # Include default devise modules. Others available are:
 # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
 devise :database_authenticatable, :registerable,
        :recoverable, :rememberable, :validatable, password_length: 7..128
 has_one :address
end

参考文献

今回勉強したのは以下の記事です。皆さんもご覧になってみてください。

終わりに

 結構簡単なことかもしれませんが、知らないとどうしていいかわからなかったので、こういった記事がすぐ見つかったのは幸運でした。
 もし、皆さんにも知識としてお役に立てたなら幸いです!

この記事が気に入ったらサポートをしてみませんか?