У меня есть некоторый код, который должен создать сеанс при входе в систему и создать "@current_user".Однако ни одна из этих вещей не работает, и после 2 дней размышлений я не могу понять, почему.
Контроллер пользователей:
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
redirect_to login_path
flash[:success] = "Account created. You may now log in"
else
redirect_to '/signup'
flash[:warning] = "Something went wrong. Try again."
end
end
private
def user_params
params.require(:user).permit(:username, :jabber_id, :password)
end
end
Контроллер сеансов:
class SessionsController < ApplicationController
def new
end
def create
@user = User.find_by_username(params[:session][:name])
if @user && @user.authenticate(params[:session][:password])
session[:user_id] = @user.id
redirect_to '/posts'
else
session[:user_id] = nil
flash[:warning] = "Failed login- try again"
redirect_to '/login'
end
end
def destroy
session[:session_id] = nil
redirect_to login_path
end
end
Контроллер приложения:
class ApplicationController < ActionController::Base
def current_user
return unless session[:user_id]
@current_user ||= User.find(session[:user_id])
end
def require_user
redirect_to '/login' unless current_user
end
end