2
3

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で2種類のログイン機能を実装するには

Posted at

##はじめに
オリジナルアプリで患者さんと看護師さんでログインページを分けた実装を行いました。
その際の、備忘録です。

##実行環境
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の記述を変更

/config/initializers/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へ変更する。

/config/initializers/devise.rb
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を設定

/config/routes.rb
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

2
3
0

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
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?