rails Devise - Как перенаправить на ссылку «Начало работы» - После проверки адреса электронной почты - PullRequest
4 голосов
/ 16 декабря 2010

Я использую Devise с моим приложением rails 3. Приложение требует от пользователей подтверждения своей электронной почты перед продолжением.

Как я могу перенаправить пользователей на определенный URL-адрес, такой как / получая, после того, как они успешно подтвердят свой адрес электронной почты с помощью полученного сообщения с подтверждением электронной почты?

Спасибо

Ответы [ 4 ]

9 голосов
/ 16 декабря 2010

Когда пользователь нажимает на ссылку подтверждения, он попадает на страницу подтверждения, которая проверяет токен подтверждения и, если он действителен, автоматически регистрирует его в приложении. Вы можете перезаписать метод after_sign_in_path_for в ApplicationController (, как показано на вики Devise ), а затем перенаправить их на начальную страницу при первом входе пользователя в систему.

def after_sign_in_path_for(resource_or_scope)
  if resource_or_scope.is_a?(User) && first login
    getting_started_path
  else
    super
  end
end

Для «первого входа в систему» ​​вы можете проверить, находится ли отметка времени подтверждено_at в течение пары минут, если вы также используете отслеживаемый модуль в devise, вы можете проверить, есть ли значение sign_in_count, равное 1, или вы можете создать собственное поле в пользователе. модель, которая отслеживает эту информацию.

0 голосов
/ 13 июля 2013

внутри 'after_sign_in_path_for' current_user.last_sign_in_at.nil?не будет работать, так как это алеради после первого входа.Однако это будет работать

if current_user.sign_in_count == 1
# do 1 thing
else
# do another thing
end
0 голосов
/ 21 сентября 2012

Я использую поле last_sign_in_at из «отслеживаемой» модели для достижения этой цели.В моем корневом действии есть следующий код:

if current_user.last_sign_in_at.nil? then
  redirect_to :controller => :users, :action => :welcome
end

http://rubydoc.info/github/plataformatec/devise/master/Devise/Models/Trackable

Кажется, работает достаточно хорошо.

0 голосов
/ 28 января 2012

Я проверяю исходный код устройства на https://github.com/plataformatec/devise/blob/master/app/controllers/devise/confirmations_controller.rb

и кажется, что у нас есть обратный вызов, чтобы сделать это "after_confirmation_path_for", но я не смог заставить его работать без переписывания Devise :: ConfirmationController

Надеюсь, это поможет, и если кто-то заставит его работать, просто определив after_confirmation_path_for, просто дайте нам знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...