##はじめに
オリジナルアプリで患者さんと看護師さんでログインページを分けた実装を行いました。
その際の、備忘録です。
##実行環境
devise (4.7.3, 4.7.2, 4.7.1)
ruby 2.3.0p0
rails 5.1.4
##手順
1、devise.rbの記述を変更
2、分けたい数のmodel/controller/viewを生成
3、routingを設定
##1、devise.rbの記述を変更
243 # ==> Scopes configuration
244 # Turn scoped views on. Before rendering "sessions/new", it will first check for
245 # "users/sessions/new". It's turned off by default because it's slower if you
246 # are using only default views.
247 # config.scoped_views = false
247行のコメントアウトを外して、trueへ変更する。
247 config.scoped_views = true
デフォルトの「false」の場合、ログアウトすると全てのスコープでログアウトされてしまうため。
##2、分けたい数のmodel/controller/viewを生成
各modelの生成 (単数形で)
$ rails g devise patient
$ rails g devise nurse
各contlloerの生成 (複数形で)
$ rails g devise:controllers patients
$ rails g devise:controllers nurses
各viewの生成 (複数形で)
$ rails g devise:views patients
$ rails g devise:views nurses
##3、routingを設定
devise_for :patients, controllers: {
sessions: 'patients/sessions',
passwords: 'patients/passwords',
registrations: 'patients/registrations'
}
devise_for :nurses, controllers: {
sessions: 'nurses/sessions',
passwords: 'nurses/passwords',
registrations: 'nurses/registrations'
}
##最後に
単体と比較しても、違う工程は2つくらいと思います。
まとめてみると簡単でした。
ほかにも認証機能の項目をデフォルトのemailでない項目で実装もしています。
【rails】devise認証をemailではなく、違う項目でログインする。
##参考記事
複数のdeviseを作成して、別々のログイン画面を作る際のファイル作成からルーティング設定
https://qiita.com/kinpin/items/067eff7d2fbe74d85c83
Railsでdeviseひとつで複数モデルを管理しよう
https://qiita.com/Yama-to/items/54ab4ce08e126ef7dade