継承された registrations_controller で定義することにより、after_sign_up_path_for(resource) を呼び出します。
class RegistrationsController < Devise::RegistrationsController
protected
def after_sign_up_path_for(resource)
new_user_profile_path(resource)
end
end
ルートをカスタマイズしなければ、このリダイレクトは正常に機能します。ただし、そうすると機能しなくなります。私のルートファイルには次のものがあります:
devise_for :users, skip: [:sessions], controllers: { registrations: "registrations" }
devise_scope :user do
get 'signin' => 'devise/sessions#new', as: :new_user_session
post 'signin' => 'devise/sessions#create', as: :user_session
delete 'signout' => 'devise/sessions#destroy', as: :destroy_user_session
get 'signup' => 'devise/registrations#new', as: :new_user_registration
post 'signup' => 'devise/registrations#create', as: :user_registration
root to: 'pages#home'
end
具体的には、post 'signup' => 'devise/registrations#create', as::user_registration 行が混乱を招きます。それがない場合は、正常に動作します。ただし、それが存在しない場合、検証エラーが原因で登録が失敗すると、URL はデフォルトで /signup ではなく /users になり、これは望ましくない動作です。
これが私が間違っていることなのか、それともdeviseにバグがあるのか 誰にも分かりますか?