Rails6でdeviseをインストールする

September 01, 2022

確認環境

$ bundle exec ruby --version
ruby 2.7.5p203 (2021-11-24 revision f69aeb8314) [x86_64-darwin19]
$ bundle exec rails --version
Rails 6.0.4.6

local サーバーで動かします。

インストール

Gemfile

gem 'devise'
$ bundle install

devise の設定

$ rails generate devise:install

config/environments/development.rb

config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
$ rails generate devise User
$ rake db:migrate

会員登録をします。

http://localhost:3000/users/sign_up

$ rails db
SQLite version 3.28.0 2019-04-15 14:49:49
Enter ".help" for usage hints.
sqlite> select * from users
   ...> ;
1|example@xxxxx.com|$2a$12$v3C0AaDc0YSKvmtzTVmwtOVwcfO.QDbsgo9mHVT8SOVQ6PBzhLc/2||||2022-08-28 04:31:57.990131|2022-08-28 04:31:57.990131

認証しているかどうかの確認 & devise で使えるようになったメソッドの確認

config/routes.rb

Rails.application.routes.draw do
  devise_for :users

  ...

  get  "sample/hoge"  => "sample#hoge"
  get  "sample/hoge2"  => "sample#hoge2"
end

コントローラを生成

$ rails g controller Sample

app/controllers/sample_controller.rb

class SampleController < ApplicationController

  before_action :authenticate_user!, only: [:hoge2]

  def hoge
    Rails.logger.fatal(user_signed_in?)
    Rails.logger.fatal(current_user.inspect)

    render json: { result: 'success' }
  end

  def hoge2
    Rails.logger.fatal('authenticated!!')

    render json: { result: 'success' }
  end
end

ログインしている状態

http://localhost:3000/sample/hoge にアクセス

ログ結果 (log/development.log)

true
#<User id: 1, email: "example@xxxxx.com", created_at: "2022-08-28 04:31:57", updated_at: "2022-08-28 04:31:57">

http://localhost:3000/sample/hoge2 にアクセス

ログ結果 (log/development.log)

authenticated!!

ログインしていない状態

http://localhost:3000/sample/hoge にアクセス

ログ結果 (log/development.log)

Processing by SampleController#hoge as HTML
false
nil

http://localhost:3000/sample/hoge2 にアクセス

ログ結果 (log/development.log)

http://localhost:3000/users/sign_in へリダイレクト

参考


SHARE

Profile picture

Written by tamesuu