2014-02-05 3 views
3

Обычно after_sign_up_path будет работать, но теперь, когда у меня есть confirmations, это относится к мусорному ведру.Devise После первого переадресации входа

Я искал способ, чтобы перенаправить пользователя на его FIRST SIGN IN, а это означает, что

  • sign_in_count == 0

  • last_sign_in == ноль

так я добавлено к моим applications_controller.rb

def after_sign_in_path_for(user) 
    if current_user.sign_in_count == 0 
    welcome_path 
    end 
end 

но конечно это не сработало. Что мне не хватает?

+0

Я должен работать с пользователем, который сначала войдет в систему, но не для другого пользователя, который уже зарегистрировался ранее. Вы должны дать еще блок для if. – sunil

+0

То есть, это не работает ... –

+0

Я думаю, что после подписания станет 1 не 0 –

ответ

16

После тестирования мы обнаружили Разрабатывают устанавливает значение sign_in_count сразу после входа в систему, а это означает, что он никогда не будет 0, это будет 1 для первого времени входа в систему:

#config/routes.rb 
devise_for :users, controllers: { sessions: "sessions" } 

#app/controllers/sessions_controller.rb 
class SessionController < Devise::DeviseController 

    def after_sign_in_path_for(resource) 
     if resource.sign_in_count == 1 
      welcome_path 
     else 
      root_path 
     end 
    end 

end 
+0

это может be => class Devise :: SessionsController

+3

Я думаю, что это должно быть так: 'Class SessionsController

+0

Я снял код из старой версии Devise (следовательно, почему я думаю, что это забросило ошибку) –

0

Пользователь «пользователь» вместо current_user.

def after_sign_in_path_for(user) 
    if user.sign_in_count == 0 
    welcome_path 
    end 
end 
+0

Я пробовал это, но он перенаправляет меня на current_user вместо welcome_path –

0

Вы передали «пользователь» в качестве переменной, тогда вы должны использовать его. И дать еще блок также потому, что вы переопределяете этот метод, то как насчет другого уже зарегистрированного пользователя.

def after_sign_in_path_for(user) 
    if current_user.sign_in_count == 0 
    welcome_path 
    else 
    #root_path 
    end 
end 
+0

Пробовал это уже :( –

Смежные вопросы