【Rails5】devsieのルーティング方法覚書
追記したいコントローラーをルートに書く必要あり
Rails.application.routes.draw do root to: 'igposts#index' devise_for :users, skip: [:sessions, :registrations, :signups], controllers: { # 編集するコントローラーを以下に記載 omniauth_callbacks: 'users/omniauth_callbacks' } 〜
上記のcontrollers: [〜
以下の部分です。deviseには既存の処理が定義されており、そのファイル自体を直接編集することはできません(多分)
そこで、下位のコントローラーで追記するわけですが、それらのコントローラー群は自動生成されていますね。
しかし全部使うことはほぼ無いでしょう。使うときは、上記のように登録しておく必要があります。
devise_forとdevise_scpeの違い
devise_for :users, skip: [:sessions, :registrations, :signups], controllers: { 〜
devise_for
ですが、これはdeviseを使う上での基本的なルーティングセットのようです。内部的には名前空間を生成してるようなので必要です。
一方でdevise_scope
は以下のように用います。一例ですが
devise_scope :user do get "signup", to: "users/registrations#new", as: :new_user_registration post "signup", to: "users/registrations#create", as: :user_registration get "users/edit", to: "users/registrations#edit", as: :edit_user_registration 〜
devise_forの変更したい部分(パス、コントローラーなど)を記載する感じのようです。ただ、名前付きルートの方が変更になってしまうと色々エラーが起こってしまったので、as:〜
でもともとの名前付きルートに固定したほうがいいかもしれません。