0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Railsでdeviseを使った利用者、管理者を別に管理する

Last updated at Posted at 2021-04-21

deviseでユーザーと管理者、それぞれを管理することになったので、そちらの分け方の備忘録。

##1.gemの導入

gem 'devise'

Gemfileへ上記の記述ができれば

$ bundle install

を行う。

##2.deviseの初期設定

$ rails g devise:install

を行い、

/config/initializers/devise.rb
config.scoped_views = true #コメントアウトを外し、trueの部分がfalseになっていればtrueに変える

なかなか探しにくいと思うのでCommand+fで検索機能使ってconfig.scopedで探すと楽。

##3.deviseに関連するmodelの作成
userモデルやadminなど、deviseで管理したいモデルを全て作成します。
deviseなのでrails gのあとはmodelではなく、deviseでモデル名は複数形ではありません。

$ rails g devise User
$ rails g devise Admin

この後でもしテーブルに必要なカラムがあればdbのファイルに名前のカラムなどを追加。

##4.dbへマイグレーションする

$ rails db:migrate

##5.modelに対応するcontrollersを作成する

作成したモデルに対してそれぞれコントローラーを作成。
deviseなのでrails gのあとはdevise:controllersでコントローラー名は複数形。

$ rails g devise:controllers Users
$ rails g devise:controllers Admins

##6.modelに対応するviewを作成する

作成したモデルに対応するviewを作成。
コントローラー名と一致するように気をつける。

$ rails g devise:views Users
$ rails g devise:views Admins

##7.routingを修正

UsersとAdminsが非常に共通したルーティングとなっているため、ルーティングを修正。

修正前

/config/routes.rb
  devise_for :admins
  devise_for :users

上記の修正前をこのように修正

修正後

/config/routes.rb
  devise_for :admins, controllers: {
  sessions:      'admins/sessions',
  passwords:     'admins/passwords',
  registrations: 'admins/registrations'
}
devise_for :users, controllers: {
  sessions:      'users/sessions',
  passwords:     'users/passwords',
  registrations: 'users/registrations'
}

これでdeviseでの複数モデルを管理できる。

0
4
2

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
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?