LoginSignup
0
0

More than 1 year has passed since last update.

deviseインストール方法,日本語化

Last updated at Posted at 2021-07-03

deviseとは

DeviseとはRailsで作成したアプリケーションへ簡単に認証機能を実装することができるgem(ライブラリ)の一つです。

ログイン、ログアウト、サインアップなどの機能を自分自身で作成するのは時間がかかりますが、devise(gem)をインストールすることでコードも簡潔に簡単に実装することができます。

Deviseをインストールすることで下記の機能を実装することができます。


  • サインアップ機能

  • サインイン機能

  • アカウント編集機能

  • パスワード変更機能

  • メール認証機能

  • アカウント凍結機能

deviseインストール手順

gemfileに下記を追記してbundle install
(devise-i18nは国際化gemで日本語化することができます。必要のない場合はgemfileに追記する必要はないです。)

gemfile
gem 'devise'
gem 'devise-i18n'

bundle install完了後下記コマンドを実行

コンソール
$ rails generate devise:install

deviseの設定

コマンドを実行して、正常に完了したら下記のようになります。
必要に応じてファイル等をい編集してください。

コンソール
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. *

  2. Ensure you have defined root_url to *something* in your config/routes.rb.
     For example:

       root to: "home#index"

     * Not required for API-only Applications *

  3. Ensure you have flash messages in app/views/layouts/application.html.erb.
     For example:

       <p class="notice"><%= notice %></p>
       <p class="alert"><%= alert %></p>

     * Not required for API-only Applications *

  4. You can copy Devise views (for customization) to your app by running:

       rails g devise:views

     * Not required *

1.URLオプションが定義

コマンドに表示された文面通りにコードを追加。

config/environments/development.rb
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

2.root pathの設定

routes.rbにルーティングの設定。

config/routes.rb
root to: "home#index"

3.フラッシュメッセージの設定

ビューにフラッシュメッセージの表示のためapplication.html.erbに下記コードを追記

app/views/layouts/application.html.erb
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>

4.devise viewを追加

deviseのビューを追加するために下記のコマンドを実行。

コンソール
rails g devise:views

'devise-i18n'を利用してビューを追加する際には下記のコマンドを実行します。

コンソール
rails g devise:i18n:views

モデルの作成

コンソール
rails g devise モデル名(user など)

db作成

dbを作成して、マイグレーションを実行

コンソール
$ rails db:create
$ rails db:migrate

マイグレーションを実行して、エラーが出ることなくテーブルの作成状況が表示されたら成功です。

コントローラーの作成

コントローラーを作成して、そ子にindexアクションを用意

コンソール
$ rails g controller コントローラー名 index

ログインしていない状態でアプリなどにアクセスしたときに、ログイン画面にリダイレクトするように定義します。

app/controller
  before_action :authenticate_user!, only: :index

  def index
  end

before_actionでindex メソッドが呼び出される前に「authenticate_user!」によってユーザー認証されているかどうかチェックするようにします。

deviseの機能設定

devise を利用するとユーザー管理に関する様々な機能を利用することができますが、
インストールしたままの状態だと下記の5つの機能だけを有効にするといった設定になっているはずです。

database_authenticatable パスワード認証機能
registerable ユーザー登録処理機能
recoverable パスワードリセットの復元機能
rememberable cookieを使用したユーザー記憶情報
validatable バリデーション機能
app/model/user.rb
class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable
end

デフォルトの状態で有効になっているdevise機能のコードの上、
コメントアウトされている部分に、オプションで設定できる機能について説明されています。

必要に応じて、追加することで使用することができます。

confirmable 登録時メールによる認証機能
trackable サインイン回数などをトラックして記録する
lockable 一定回数認証失敗時のロック機能
timeoutable 一定時間アクセスのないアカウントのタイムアウト機能
omniauthable OAuth認証などSNS連携による認証機能

参考サイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0