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