Я хочу перенаправить неактивного пользователя на путь регистрации, чтобы собрать некоторую информацию. Вот два подхода, которые я выбрал, но ни один не работает:
Я переопределил метод devise after_sign_in_path следующим образом (в application_controller.rb ):
def after_sign_in_path_for(resource)
debugger
if(account_active)
return root_path;
else
return edit_user_registration_path(resource)
end
end
Когда я подключил код к отладчику, я вижу, что devise вызывает after_sign_in_path_for. Кроме того, этот вызов генерирует правильный URL:
(rdb:2) after_sign_in_path_for(resource)
"/users/edit.1"
Однако, когда я просматриваю логи сервера, не делается никаких попыток перенаправить на /users/edit.1 ни при каких обстоятельствах.
Я попытался переместить вышеуказанный метод в application_helper.rb, session_controller.rb (путем расширения Devise :: SessionController) и session_helper.rb
Проблема в том, что devise вызывает этот метод для получения URL, но никогда не пытается перенаправить. Я проверил логи веб-сервера, и devise напрямую перешел на URL user_root.
Вот соответствующая конфигурация устройства от маршрутов. Rb:
devise_for :users do
resource :registration,
only: [:new, :create, :edit, :update],
path: 'users',
path_names: { new: 'sign_up' },
controller: 'devise/registrations',
as: :user_registration do
get :cancel
end
root :to => "home#index"
end
match '/user' => "products#index", :as => 'user_root'
Любые предложения о том, что я должен попробовать?
Спасибо
Tabrez