1 deviseをインストール
##ユーザー登録機能を実装するためには、deviseというgemをインストールします。
-
Gemfileで gem 'devise'を追加
-
ターミナルでbundle install
-
ここでrails s でサーバー起動しないと反映されない
-
rails g devise:install で設定ファイルを作成
2 ユーザーモデル+テーブルを作る
ここで注意したいのが普通のモデルを作る時と同じではないということです。
モデル作成
-
ターミナルで rails g devise user と入力(この時ルーティングが自動設定され、マイグレーションファイルも生成される)
-
db→migrate→2020〜のファイルにてテーブルに追加するカラムやカラムの型を記載する。
class DeviseCreateUsers < ActiveRecord::Migration[6.0]
def change
create_table :users do |t|
t.string :name, null: false
t.string :email, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
テーブル作成
- ターミナルでrails db:migrate コマンドでテーブル作成
#3 サインアップ(新規登録)
サインアップ時に入力する情報はパラメーターとしてサーバーに送信される。
通常コントローラーのストロングパラメーターで受け取るパラメーターを制限しているが、deviseの時は書き方が違う。
devise_parameter_sanitizerメソッド
deviseのUserモデルに関わる「ログイン」「新規登録」などのリクエストからパラメーターを取得できる。
下の記述は、サインアップの時にニックネームというキーのパラメーターを許可する記述。実際ニックネームの後にも新規登録時に必要な項目が追記される。ここでのpermitの中の引数は普通のパラメーターの時と違うので注意!
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
private
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
end
end
初めのbefore_actionはdeviseによる処理であればconfigure_permitted_paramatersメソッドを実行するという設定。丸々必要なのだが、この辺は調べると出てくるので丸々覚える必要はない
これにより新規登録時の情報がテーブルに保存できている。