has_secure_passwordとは?
パスワードを暗号化して保存してくれます。めっちゃ便利!!
使い方は、まずモデルに定義する。
user.rb
class User < ApplicationRecordclass
.
.
.
has_secure_password
end
モデルにこのメソッドを追加すると、次のような機能が使えるようになる。
has_secure_passwordの便利機能
- セキュアにハッシュ化したパスワードを、データベース内のpassword_digest属性に保存できるようになる。
- 2つの仮想的な属性(passwordとpassword_confirmation)が使えるようになる。また、存在性と値が一致するかどうかのバリデーションも追加される。
- authenticateメソッドが使えるようになる(引数の文字列がパスワードと一致するとUserオブジェクトを返し、一致しない場合はfalseを返すメソッド)。
条件
has_secure_password機能を使えるようにするには、モデル内にpassword_digest属性が含まれてる必要がある。暗号化されたパスワードはpassword_digestというカラムに保存されるので、同一名称のカラムを用意しておく必要があります。