Переопределить путь перенаправления Devise, используя параметры? - PullRequest
0 голосов
/ 10 мая 2018

Я следовал инструкциям Как: Отменить подтверждения, чтобы пользователи могли выбирать свои пароли в рамках активации активации . У меня все работает плавно.

Мой почтовик отправляет ссылку для подтверждения а-ля:

"https://example.com/users/confirmation?confirmation_token=foo"

После того, как пользователь выбрал свой новый пароль, он будет перенаправлен на стандарт after_sign_in_path_for:

def do_confirm
  @confirmable.confirm
  set_flash_message :notice, :confirmed
  sign_in_and_redirect(resource_name, @confirmable)
end

Но что, если я хочу перенаправить пользователя на отдельную страницу, специально предназначенную для этого пользователя? Как например ::

"https://example.com/users/confirmation?confirmation_token=foo&redirect_to=#{CGI.parse('custom_path')}"

Как бы я это настроил?

1 Ответ

0 голосов
/ 10 мая 2018

Как сказал Том в приведенном выше комментарии, вы хотите переопределить метод after_sign_in_path_for.

На странице devise GitHub wiki есть страница, которая объясняет это более подробно и дает пример кода (если вы используете OAuth, он будет выглядеть немного иначе):

class ApplicationController < ActionController::Base
  protect_from_forgery

  protected  
    def after_sign_in_path_for(resource)
      sign_in_url = new_user_session_url
      if request.referer == sign_in_url
        super
      else
        stored_location_for(resource) || request.referer || root_path
      end
    end
end
...