deviseでユーザーと管理者、それぞれを管理することになったので、そちらの分け方の備忘録。
##1.gemの導入
gem 'devise'
Gemfileへ上記の記述ができれば
$ bundle install
を行う。
##2.deviseの初期設定
$ rails g devise:install
を行い、
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が非常に共通したルーティングとなっているため、ルーティングを修正。
修正前
devise_for :admins
devise_for :users
上記の修正前をこのように修正
修正後
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での複数モデルを管理できる。