railsでdeviseを使ってみた

deviseという認証ライブラリを使う

まずはGemfileに

gem 'deviseと追加する。

その後bundle install

gemがインストールされたら、Deviseをインストール。

rails g devise:install

次に、Devise用のモデルを作成する。

rails g devise user

これを実行すると、devise用にuserというモデルが作成される。

(モデルを作ったらマイグレーションを忘れずに。rails db:migrate

  • アクションの作成

任意のコントローラーで、

class UsersController < ApplicationController
  before_action :authenticate_user!, only: :show

  def index
    @users = User.all
  end

  def show
    @user = User.find(params[:id])
  end

end

のようにすると、showアクションを呼ぶ前に、ログインされているかどうかをチェックしてくれる。

ログインしていなければ、ログイン画面にリダイレクトする。

ここで詰まった

new_user_session_urlが見つかりませんが出る。

調べてみると、routes.rbに

devise_for :usersを追加しないといけない事が判明。

追加すると無事ログイン画面にリダイレクトされた。

あと、routes.rbには、rootの設定も必須のようです。

devise_for :users
root 'users#index'