deviseの導入
deviseとは
railsで作成したアプリケーションに簡単に認証機能(ログイン、ログアウト機能等)を実装できるgemのこと。
gemとは
Rubyのライブラリの一つである。 ライブラリとは、画像加工、フォロー機能、認証機能など便利な機能をまとめたもののことであり、 gemを用いることにより、多くの機能を一からコードを書くことなく、実装することができる。
gemの使い方は、Githubに公開されているリポジトリから、READMEで確認することができるものが多い。
deviseの実装
Gemfileへの記述
Railsアプリケーション作成時に自動生成される、Gemfileというファイルに、deviseを使用するために記述を行う。 Gemfileを開き、下記を最後の1行に追加する。
gem 'devise'
bundle installの実行
bundle installは"Gemfile"に記述したgemをRailsアプリケーションで使用できるようにインストールするコマンドのこと。 "Gemfile"に記述するだけではgemはインストールされないため、gemを新しく追加した際は、bundle installを実行すること。
$ bundle install
deviseのインストール
deviseでは、gemのインストール後、改めてインストールの実行が必要になるため注意する。
まず、deviseを使用するために必要なファイルを作成する。
$ rails g devise:install
deviseで認証するmodelの作成
下記のコマンドを実行してUserモデルを作成する。 deviseでは、独自のコマンドを使用するため注意する。
rails g devise User
作成されたmodelファイルの確認
上記のコマンドを実行すると、自動でapp/models/user.rbが生成される。 この中には、deviseで利用する機能が記述されている。
class User < ApplicationRecord # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable end
:database_authenticatable(パスワードの正確性を検証)
:registerable(ユーザ登録や編集、削除)
:recoverable(パスワードをリセット)
:rememberable(ログイン情報を保存)
:validatable(email のフォーマットなどのバリデーション)
作成されたmigrateファイルの確認
作成されたmigrateファイルを確認する。(db/migrateフォルダ内にあるファイル。) 今回作成するアプリケーションは新規登録時に名前、email、パスワードの登録が必要であるが、 デフォルトでは、名前を保存するカラムがないため、nameカラムを追加する。
t.string :name
データベースへマイグレーションの実行
$ rails db:migrate
確認のため、db/schema.rb内に、usersテーブルが作成されているか、nameカラムが実装されているか確認する。
ルーティングの確認
config/routes
Rails.application.routes.draw do devise_for :users end
devise_for :usersが自動で記述されている。
deviseで使用するviewの準備
deviseではデフォルトで、viewを作成し、表示することができます。
このviewはdeviseの機能を使ってviewファイルを作成することで、上書きしてカスタマイズすることができます。
以下のコマンドを実行して、必要な View を Rails アプリケーションのディレクトリに用意します。
$ rails g devise:views
上記により、作成されたファイルを上書きすることで、deviseのviewを変更することが可能となる。
以上。
アプリケーションの作成 参考URL 作成するアプリケーションについて - takifugu’s blog