Rails ユーザーのパスワードを保存するモデルクラス を作成する
Gemfileのbcryptのコメントを外します。
gem 'bcrypt', '~> 3.1.7'
bcryptをインストールします。
$ bundle install
Userモデルクラスを作成します。
$ bin/rails g model users
Userモデルクラスに、has_secure_password を追加します。
class User < ApplicationRecord has_secure_password end
マイグレーションファイルに、テーブルの項目を追加します。
このとき、暗号化したパスワードを保存する password_digest を追加します。
class CreateUsers < ActiveRecord::Migration[5.2] def change create_table :users do |t| t.string :email, null: false t.string :password_digest t.timestamps end end end
テーブルを作成します。
$ bin/rails db:migrate
railsコンソールを起動し、ユーザーデータを登録します。
$ bin/rails c > user = User.new > user.name = 'hikotaro" > user.email = 'hikotaro@example.co.jp' > user.password = 'zaq12wsx' > user.password_confirmation = 'zaq12wsx' > user.save
続けて、ユーザーのパスワード認証を試します。
> user.authenticate('cde34rfv') false > user.authenticate('zaq12wsx') #<User id: 1, name: "hikotaro", email: "hikotaro@example.co.jp", password_digest: "$2a$12$bWRsPGrzgCac0g0IYgjW8OXshnDwaEmoIcHeJ2AP3ot...", ....