はじめに
こんにちは、だいごです。
今回は、Railsにおいてユーザー管理機能を簡単に実装することができるdeviseについてまとめていきます。
よかったらご覧ください。
deviseとは
ユーザー管理機能を簡単に実装するためのGem(※1)。
ログイン、サインアップなどのログイン機能を1から構築するのはかなり大変ですが、Deviseを利用することで簡単に実装することが出来ます。
deviseで実装できる主な機能としては、
- サインアップ機能
- サインイン機能
- アカウント編集機能
- パスワード変更機能
- メール認証機能
- アカウント凍結機能
(※1)RubyGemsにはたくさんのライブラリがあり、それぞれをGemと呼ぶ。
deviseの使い方
ここからはdeviseのインストールからデバイス関連のコマンドについてまとめていきます。
deviseのインストール
まずはdeviseのインストールの手順からまとめていきます。
初めはGemfileの編集です。
# 中略
gem 'devise'
次にコマンドを実行し、インストールします。
% bundle install
あとはサーバーを再起動すればインストールは完了です。
deviseの設定ファイルの作成
ここではdevise関連のファイルの作成手順をまとめていきます。
ここで使用するコマンドは、
rails g devise:install
で、これはdeviseの「設定関連に使用するファイル」を自動生成してくれるコマンドになります。
ターミナルでコマンドを実行していきます。
% rails g divise:install
コマンド入力後、以下のような表示が出ればOKです。
create config/initializers/devise.rb
create config/locales/devise.en.yml
===============================================================================
Depending on your application's configuration some manual setup may be required:
1. Ensure you have defined default url options in your environments files. Here
is an example of default_url_options appropriate for a development environment
in config/environments/development.rb:
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
In production, :host should be set to the actual host of your application.
* Required for all applications. *
# 中略
4. You can copy Devise views (for customization) to your app by running:
rails g devise:views
* Not required *
===============================================================================
deviseによるモデルの作成
続いて、deviseでモデルの作成をしていきます。
ここで使用するコマンドは、
rails g devise
で、これはモデルとマイグレーションの生成やルーティングの設定などをまとめて処理するコマンドです。
実行することで、モデルが生成され、routes.rbにはdeviseに関連するパスが追加されます。
ターミナルでコマンドを実行していきます。
% rails g devise user
ここで、モデル名は単数系としておきます。
コマンド入力後、以下のようになれば成功です。
invoke active_record
create db/migrate/20200309082300_devise_create_users.rb
create app/models/user.rb
invoke test_unit
create test/models/user_test.rb
create test/fixtures/users.yml
insert app/models/user.rb
route devise_for :users
ここで、コマンドにより作成されたマイグレーションファイルとルーティングを見ていきます。
まずは、マイグレーションファイルです。
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: ""
## カラムの追加が可能
t.string :name, null: false
## 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:statusを実行し、statusを確認します。statusがdownの状態でファイルを編集して、ターミナルでrails db:migrateを実行してあげればモデルにカラムを追加することができます。
次に、ルーティングです。
Rails.application.routes.draw do
# devise_forメソッド
devise_for :users
root to: 'prototypes#index'
resources :prototypes
end
先ほど実行したコマンドにより、
devise_for
が生成されています。
これは、ユーザー機能に必要な複数のルーティングを一度に生成してくれるdeviseメソッドにです。
個人的に大事だと思ったので触れてみました。
deviseによるビューの作成
最後に、ビューの作成を作成していきます。
ここで使用するコマンドは、
rails g devise:view
です。
これは、deviseに用意されたビューファイルをコピーし、app/viewsの配下に配置してくれるコマンドで、HTMLを修正できるため、カスタマイズも可能です。
コマンドを実行していきます。
% rials g devise:views
コマンド入力が成功すれば、以下のディレクトリが生成されます。
- sessions:ログイン画面
- registrations:ユーザ登録画面とアカウント編集画面
- confirmations:認証メール再送信するための画面
- passwords:パスワードを変更するための画面
- unlocks:アカウント凍結画面
- shared:Deviseの画面に遷移させるためのリンク
基礎の基礎は抑えられたと思うので今回はこの辺にしておきます。
おわりに
最後まで読んでいただきありがとうございます。
まとめるのが下手で無駄に長くなってしまいました、、
今後も自身の学びを発信していこうと思うのでよかったらご覧ください。
ご指摘・コメントお待ちしております。
ありがとうございました。