Приложение не создает сессий и @current_user не работает - PullRequest
0 голосов
/ 04 января 2019

У меня есть некоторый код, который должен создать сеанс при входе в систему и создать "@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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...