deviseで複数モデルを管理

榊間です。

行けるかどうかわからない語学留学の予定を立てるのが最近の楽しみです。

ということで、今日は新しくアプリを作るなら大体使うであろうdeviseについて書いていこうと思います。
複数の種類のユーザーを想定したときに、viewやmodelを別々にしたいってときがあったので、そのやり方を書いていきます。


devise導入

まずはdeviseを使えるようにします

rails g devise:install

次に/config/initializers/devise.rbで

config.scoped_views = true

にしたら


ここからそれぞれのユーザーに対してmodelとcontrollerとviewを作っていきます。(今回はuserとengineer)

rails g devise user
rails g devise engineer
rails g devise:controllers users
rails g devise:controllers engineers
rails g devise:views users
rails g devise:views engineers


あとはroutingを

devise_for :users, controllers: {
  sessions:      'admins/sessions',
  passwords:     'admins/passwords',
  registrations: 'admins/registrations'
}
devise_for :engineers, controllers: {
  sessions:      'users/sessions',
  passwords:     'users/passwords',
  registrations: 'users/registrations'
}

として、コントローラーをしっかり分けたらOK
ここ参考にしました
Ruby - Railsでdeviseひとつで複数モデルを管理しよう - Qiita(知ってる人の記事を知らず知らずのうちに参考にしてました、、、)

本当はここからそれぞれにomniauthを導入したかったんですが、長くなりそうなのでまた今度にします!