deviseで複数のモデルを管理
最近、ECサイトを開発するにあたり、出てきたユーザーのログイン機能実装。
ですが、ECサイトのようなユーザーとは別な使用(今回でいう注文の確認と新規商品等の確認)をする管理者もログインが必要になる場合、どうしたらいいかということで下記サイトを参考にしました!
ここからは自分の頭を整理するために流れを簡潔にまとめて見ました。
rails g devise:install
config/initializers配下にdevise.rb が追加される。
最後の
config.scoped_views = true
に変更してコメントアウト。
このファイル他にもコメントされている部分があってなんかすごい大事そうな気配がしたので、それぞれの意味を調べて見ました!
下記がとてもわかりやすくまとめてありました!
どうやらここではdeviseのviewsの編集を許可する意味の記載らしい。
またちょいちょい目にするscopeはとりあえず範囲という意味で把握すれば良いらしい。
あとはそれぞれdeviseと関連付けたいモデルとコントローラーを生成する。
rails g devise "関連づけたいモデル名"
rails g devise:controllers "関連づけたモデルと連動するコントローラー名(s)"
rails g devise:views
ルーティングの設定
現状のままだと全て同じコントローラー経由になってしまう。
ルーティングをいじらないとだめということで、
devise_for :models, controller: {
sessions: "models/sessions",
passwords: "models/passwords"
registrations: "models/registration"
}
みたいな感じで記載する。