Railsの「has_secure_passwordメソッド」について解説する。
使い方としては、以下のようにモデルに定義する。
user.rb
class User < ApplicationRecord
.
.
.
has_secure_password
end
上記のようにモデルにこのメソッドを追加すると、次のような機能が使えるようになる。
- セキュアにハッシュ化したパスワードを、データベース内のpassword_digestという属性に保存できるようになる。
- 2つのペアの仮想的な属性(passwordとpassword_confirmation)が使えるようになる。また、存在性と値が一致するかどうかのバリデーションも追加される 。
- authenticateメソッドが使えるようになる(引数の文字列がパスワードと一致するとUserオブジェクトを、間違っているとfalseを返すメソッド)。
ちなみに、この魔術的なhas_secure_password機能を使えるようにするには、1つだけ条件がある。それは、モデル内にpassword_digestという属性が含まれていること。
参考:Railsチュートリアル