【Rails】devise1つで複数モデルを管理する方法


開発環境

・Ruby: 2.5.7
・Rails: 5.2.4
・Vagrant: 2.2.7
・VirtualBox: 6.1
・OS: macOS Catalina

1.deviseを導入

Gemfile
gem 'devise'
ターミナル
$ bundle
ターミナル
$ rails g devise:install

2.「devise.rb」を編集

config/devise.rb
# 235行目をコメントアウトして、「true」に変更
config.scoped_views = true

3.モデルを作成

ターミナル
$ rails g devise user
ターミナル
$ rails g devise admin

4.コントローラーを作成

ターミナル
$ rails g devise:controllers users
ターミナル
$ rails g devise:controllers admins

4.ビューを作成

ターミナル
$ rails g devise:views users
ターミナル
$ rails g devise:views admins

5.ルーティングを編集

routes.rb
Rails.application.routes.draw do
    devise_for :users, controllers: {
      sessions:      'users/sessions',
      passwords:     'users/passwords',
      registrations: 'users/registrations'
    }

    devise_for :admins, controllers: {
      sessions:      'admins/sessions',
      passwords:     'admins/passwords',
      registrations: 'admins/registrations'
    }
end

6.必要無いビューを削除する

ターミナル
$ rails d devise:views