deviseを使ってユーザー管理機能を実装
devise
ユーザー管理機能を簡単に実装するためのGemです。実際に運用されている多くのRailsアプリケーションサービスで使用されています。
gem 'devise'
# Gemをインストール
% bundle install
Gemをインストールした後はrails sをcontrol + Cで一度停止し、サーバーを再起動する必要があります。
これは、インストールしたGemの反映するタイミングが、サーバー起動時だからです。
deviseの設定ファイルを作成
deviseを使用するためには、Gemのインストールに加え、 devise専用のコマンドで設定ファイルを作成する必要があります。
rails g devise:installコマンド
このコマンドは、追加したdeviseというGemの「設定関連に使用するファイル」を自動で生成するコマンドです。
現時点では、deviseを追加したら、最初に1度実行しておく程度の認識で問題ありません。
% rails g devise:install
deviseのUserモデルを作成
作成には通常のモデルの作成方法ではなく、deviseのモデル作成用コマンドでUserモデルを作成します。
rails g deviseコマンド
ユーザー機能の対象を指定することで、モデルとマイグレーションの生成やルーティングの設定などをまとめて処理します。
実行すると、モデルが生成され、routes.rbにはdeviseに関連するパスが追加されます。
# deviseコマンドでUserモデルを作成
% rails g devise user
テーブルを作成
rails g devise userコマンドで作成されたマイグレーションファイルは以下のように作成されています。
class DeviseCreateUsers < ActiveRecord::Migration[6.0]
def change
create_table :users do |t|
## Database authenticatable
t.string :email, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
## Recoverable
t.string :reset_password_token
t.datetime :reset_password_sent_at
## Rememberable
t.datetime :remember_created_at
# 省略
t.timestamps null: false
end
add_index :users, :email, unique: true
add_index :users, :reset_password_token, unique: true
# add_index :users, :confirmation_token, unique: true
# add_index :users, :unlock_token, unique: true
end
end
テーブルの設計が完了したら、マイグレーションを実行します。
% rails db:migrate
deviseのビュー作成
rails g devise:viewsコマンド
deviseに用意されたビューファイルをコピーし、app/viewsの配下に配置してくれるコマンドです。
HTMLを修正できるため、カスタマイズ可能になります。
deviseのコマンドで、devise用のビューファイルを生成します。
% rails g devise:views
上記のコマンドで以下のビューファイルが作成されます。
サインアップ画面はapp/views/devise/registrations/new.html.erb、ログイン画面のビューはapp/views/devise/sessions/new.html.erbというビューファイルが対応しています。
好みのビューにカスタマイズができます。
サインアップ時の名前登録
usersテーブルにカラムを追加する場合
rails g migrationコマンド
マイグレーションを生成するコマンドです。
マイグレーションはこれまで、rails g modelコマンドでモデルと一緒に生成されていましたが、すでに作成されたテーブルの内容を変更する際などに使用します。
rails g migration Addカラム名To追加先テーブル名 追加するカラム名:型とすることで、テーブルにカラムを追加する際に必要なコードが記述された状態で、マイグレーションが生成されます。
例としてカラム名nicknameを追加する場合
# usersテーブルにnicknameカラムをstring型で追加するマイグレーションファイルを作成
% rails g migration AddNicknameToUsers nickname:string
# 作成したマイグレーションを実行
% rails db:migrate
ストロングパラメーター設定
devise_parameter_sanitizerメソッド
deviseにおけるparamsのようなメソッドでdeviseのUserモデルに関わる「ログイン」「新規登録」などのリクエストからパラメーターを取得できます。
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
private
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname])
end
end
:devise_controller?というdeviseのヘルパーメソッド名を指定して、もしdeviseに関するコントローラーの処理であれば、そのときだけconfigure_permitted_parametersメソッドを実行するように設定しています。他のtweetsコントローラーなどでは処理は読み込まれても、実行まではされません。
その他ログインの有無でビューを変更するなど書き換えたら、
ユーザー管理機能の基本は終了です。
以上備忘録でした。
Author And Source
この問題について(deviseを使ってユーザー管理機能を実装), 我々は、より多くの情報をここで見つけました https://qiita.com/mr0216/items/54bc1c5f9e673c8eaa84著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .