Ruby:devise gemのインストールからユーザー管理機能の実装まで


devise gemはRuby on Railsでユーザー登録やログインなど、ユーザー管理機能を簡単に実装できるgemです。
備忘録としてdevise gemのインストールからユーザー管理機能の実装までの流れを記します。

devise gemのインストール

まずはRailsのGemfileファイルの一番下に次の記述

Gemfile
gem 'devise'

その後、ターミナルでbundle installを入力

ターミナル
bundle install

インストール後の初期設定

ターミナルで次のコマンドを入力します。
追加したdevise gemの「設定関連に使用するファイル」を自動で生成するコマンドです。

ターミナル
rails g devise:install

以下のファイルが生成されれば成功です。

ターミナル
create  config/initializers/devise.rb
create  config/locales/devise.en.yml

続いて次のコマンドを順に打っていきます。

ターミナル
rails g devise user
rails db:migrate
rails g devise:views

各コマンドの意味は次の通りです。

コマンド 実行される内容
rails g devise user Userモデル生成
マイグレーションファイル生成
ルーティングに"devise for :users"を追記
※devise_forは、ユーザー機能に必要な複数のルーティングを一度に生成してくれるdeviseのメソッド
rails db:migrate マイグレーションを実行してテーブル作成
rails g devise:views ビューファイル作成

マイグレーションファイルには必要に応じてカラムの設定をします。
たとえばrails g devise userコマンドで自動生成されたマイグレーションには、nameカラムが設定されていないので追記します。

rails g devise:viewsコマンドは、deviseに用意されたビューファイルをコピーし、app/viewsの配下に配置してくれるコマンドです。

deviseでログイン機能を実装すると、ログイン/サインアップ画面が自動的に生成されますが、deviseのGem内に存在するビューファイルを読み込んでいるため、ビューファイルとしては生成されません。

そのため、deviseのビューファイルに変更を加えるために、このコマンドを入力してビューファイルを生成します。

ここまで実装したら、あとは各々の好みのデザインにしたり、機能を追加したりします。

おまけ:deviseで使えるメソッド

devise gemをインストールしたことで使えるメソッドを紹介します。

メソッド 意味
user_signed_in? ユーザーがログインしているか否かを判断できる
current_user ログインしているユーザーの情報を取得できる
devise_parameter_sanitizer deviseにおけるparamsのようなメソッド
deviseのUserモデルに関わる「ログイン」「新規登録」などのリクエストからパラメーターを取得できる

devise_parameter_sanitizerの書き方例は以下の通りです。

devise_parameter_sanitizer.permit(:deviseの処理名, keys: [:許可するキー])
使用できる:deviceの処理名→:sign_in:sign_up:account_update

参考資料

deviseの公式GitHub