ユーザー管理機能の実装方法
Ruby on Railsで作成しているアプリケーションでユーザー管理機能を実装する方法を紹介したいと思います。deviseというgemライブラリを用いて実装していきます。
流れは以下の通りです。
1. deviseの導入
2. deviseの設定ファイルを作成
3. deviseのユーザーモデルを作成
4. テーブルの作成
5. deviseのビューファイルの作成
6. 後でカラムを追加する場合
7. ストロングパラメーターの使用
8. その他
1. deviseの導入
まずはdeviseをインストールします。Gemfileの最後の行にdeviseの記述を加えて、ターミナルでbundle installをしましょう。
Gemfile
gem 'devise'
ターミナル
% bundle install
2. deviseの設定ファイルを作成
deviseを使用するために、devise専用のコマンドで設定ファイルを作成しましょう。
ターミナル
% rails g devise:install
3. deviseのユーザーモデルを作成
ユーザー情報を管理するためのモデルを作成しましょう。
ターミナル
% rails g devise user
4. テーブルの作成
nicknameなどの追加したいカラムがある場合は、マイグレーションファイルに追記しましょう。
db/migrate/20xxxxxxxxx_devise_create_users.rb
t.string :nickname, null: false
t.string :email, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
テーブル設計が確認できたらマイグレーションを実行しましょう。
ターミナル
% rails db:migrate
5. deviseのビューファイルの作成
deviseのビューファイルを生成しましょう。カラムを追加している場合はビューファイルを編集しましょう。
ターミナル
% rails g devise:views
6. 後でカラムを追加する場合
もし後になってマイグレーションファイルに新しくカラムを追加したくなった場合は下記のコマンドを実行しましょう。firstnameカラムを追加するなら下記のようになります。
% rails g migration AddFirstnameToUsers firstname:string
rails db:rollbackをした後にカラムを追記して再度rails db:migrateを実行する方法もあります。
7. ストロングパラメーターの使用
deviseの処理を行うコントローラーはGem内に記述されているため、編集することができません。そのため、すべてのコントローラーが継承しているファイルであるapplication_controller.rbファイルにストロングパラメーターを定義することで、処理を読み込ませます。deviseが提供しているdevise_parameter_sanitizerメソッドを使って、追加したカラムの処理を許可させましょう。
app/controllers/application_controller.rb
以上でユーザー管理機能の実装は完了です。
8. その他
ユーザー管理機能の実装時に使える記述をいくつか紹介します。
下記のメソッドは未ログインユーザーをログインページに転送させます。
controller
未ログインユーザーを特定のページにアクセスできないようにしたいときは、下記のような記述ができます。リダイレクトという仕組みを使ってトップページに遷移させることができます。
controller
ログインの有無で処理を変えたい場合は下記の記述をします。
view
以上です!