Railsのbcryptを使うときの注意点がある?

Railsのbcryptというgemはまあ便利。

暗号化されたパスワードを保存できるようになります。

このgemを使うと、パスワードはpassword_digestカラムに保存されます。

ただ、passwordの記述をすべてpassword_digestに直さなくてもアプリは動くのですよ。

 

例えばuser_controller.rbのcreateアクションで

	@user = User.new(name: params[:name], email: params[:email], password: params[:password])

というようにpasswordカラムを指定してもエラーは出ません。

 

しかしながら、バリデーションを指定するときは要注意。

ついこの流れで

validates :password_digest, presence: true

ではなく、

validates :password, presence: true

とやってしまいそうですが、これでは問題が発生します。

 

ぼくの場合、

validates :password, presence: true

が原因で、データベースに不具合が起きました。

ここでハマって数時間ロスしてしましたが、バリデーションの記述を

validates :password_digest, presence: true

に変更したところ、不具合が解消。

bcryptでパスワードを暗号化している方は、password_digestカラム」にバリデーションをかけましょう。

 

追記

いや、と思ったら、じつは

bcryptにはバリデーションが「標準装備」されているようですね。

この記述を書かなくても大丈夫のようです笑

お騒がせしました。

したがって、bcyptを使うときは、

  • パスワードのバリデーションを書かない
  • password_digestで書く

のいずれかになりますね。

 

それでは!

Lin