Я сделал приложение с Rails 4, где пользователи могут получить доступ к веб-сайту только в том случае, если они зарегистрированы. Я не использовал Devise для этого, но я следил за this railcast. Он работает хорошо, но у меня проблема, когда пользователь регистрируется, он все равно может перейти на страницу входа в систему, я хочу, чтобы при попытке перейти на страницу регистрации он перенаправляется на главную страницу, но я не сделал найти способ сделать это.Запретить доступ к странице подключения, когда пользователь уже зарегистрирован
контроллер Session
class SessionsController < ApplicationController
def new
if @current_user.nil?
render :layout => false
else
redirect_to root_url, :notice => "Vous êtes déjà connecté"
end
end
#Connexion
def create
user = User.authenticate(params[:email], params[:password])
if user
if params[:remember_me]
cookies.permanent[:auth_token] = user.auth_token
else
cookies[:auth_token] = user.auth_token
end
session[:user_id] = user.id
redirect_to root_url, :notice => "Bienvenue !"
else
redirect_to :connect, :notice => "E-mail ou mot de passe incorrect"
end
end
def destroy
session[:user_id] = nil
cookies.delete(:auth_token)
redirect_to :connect, :notice => "Déconnecté !"
end
end
Контроллер Применение
def current_user
@current_user ||= User.find_by_auth_token!(cookies[:auth_token]) if cookies[:auth_token]
end
Я пытался поставить, если в моем new
действия и проверьте, есть ли текущий пользователь, но он не работает
Где вы определяете '@ current_user'? Можете ли вы показать код? – AbM
'redirect_to root_url if current_user' помещает эту строку в начало действия' new'. –