Как заставить RegistrationsController отображать страницу sign_up только в том случае, если пользователь уже вошел в систему? - PullRequest
2 голосов
/ 21 марта 2012

Я пытался найти решение от Google и здесь, в SO, но не смог найти ...
Это единственный вопрос. У него только один ответ, и он принят, но у меня не работает ... Вот мой код:

class RegistrationsController < Devise::RegistrationsController

  before_filter :authenticate_user!

  def new
    puts "Method new was called"
    super
  end

end

Когда я не авторизован на localhost:3000/sign_up, страница отображается нормально и печатается Method new was called. Я хочу, чтобы контроллер перенаправил меня на страницу входа, если я еще не вошел в систему. Конечно, я могу проверить это методом new и перенаправить, но это не очень хорошее решение ... Я уверен, что есть более элегантный способ , Я даже пытался использовать prepend_before_filter :authenticate_user!, но он тоже не работает.

РЕДАКТИРОВАТЬ

Я определил маршруты для этого контроллера в routs.rb

devise_for :users, :controllers => { :sessions => "sessions", :registrations => "registrations" }

Ответы [ 2 ]

9 голосов
/ 21 марта 2012

Devise::RegistrationsController имеет require_no_authentication перед фильтром по умолчанию.

Так что его необходимо пропустить:

class RegistrationsController < Devise::RegistrationsController
  skip_before_filter :require_no_authentication
  before_filter :authenticate_user!

  def new
    puts "Method new was called"
    super
  end

end
3 голосов
/ 15 июля 2014
skip_before_filter :require_no_authentication

before_filter :authenticate_user!

больше не работает.

Используйте authenticate_scope! вместо.

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