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を導入したかったんですが、長くなりそうなのでまた今度にします!