#ruby-on-rails #ruby #devise #ruby-on-rails-6
#ruby-on-rails #ruby #разработка #ruby-on-rails-6
Вопрос:
Я использую devise с пользовательским контроллером (пользовательским контроллером). Вместо того, чтобы входить в систему и переходить user/edit
, я предпочитаю обслуживать домашнюю страницу. Для этого мне нужно отредактировать метод devise session create controller.
Я знаю, что могу редактировать пользовательский контроллер devise, следуя инструкциям, которые предоставляет devise:
# before_action :configure_sign_in_params, only: [:create]
# GET /resource/sign_in
# def new
# super
# end
# POST /resource/sign_in
# def create
# super
# end
# DELETE /resource/sign_out
# def destroy
# super
# end
# protected
# If you have extra params to permit, append them to the sanitizer.
# def configure_sign_in_params
# devise_parameter_sanitizer.permit(:sign_in, keys: [:attribute])
# end
Итак, следуя этим инструкциям, как мне просто заставить create
метод делать именно то, что он делает в данный момент, redirect_to "/"
а не то, что он делает в данный момент?
Обратите внимание, вот что он делает в настоящее время:
self.resource = resource_class.new(sign_in_params)
clean_up_passwords(resource)
yield resource if block_given?
respond_with(resource, serialize_options(resource))
Также обратите внимание, что я мог бы скопировать этот код непосредственно из devise на github, а затем отредактировать его, например:
self.resource = resource_class.new(sign_in_params)
clean_up_passwords(resource)
yield resource if block_given?
redirect to: "/"
но я хочу сделать это с помощью super
метода, поскольку это рекомендуется в инструкциях по разработке.
Комментарии:
1. Вы пробовали after_sign_in_path_for для Devise helper?
Ответ №1:
Нет необходимости переопределять create
действие, поскольку Devise позволяет вам делать именно это с after_sign_in_path_for
помощью метода.
def after_sign_in_path_for(resource)
root_path
end