레일 인증에 문제가 있습니다. 나는 Devise를 사용하지 않고있다. 어떤 이유로 든 앱에 로그인해도 문제가 없지만 새 계정을 만들 때 리디렉션하려고하면 current_user가 0이됩니다. 어떤 충고?레일즈 4 스크래치로부터의 사용자 인증 Current_user == nil?
사용자 모델
class UsersController < ApplicationController
before_action :set_user, only: [:show]
def create
@user = User.new(user_params)
if @user.save
flash[:notice] = "Welcome to the site"
redirect_to current_user
else
flash[:notice] = "There was a problem creating your account. Please try again."
render new
end
end
def new
@user = User.new
end
def show
@locations = current_user.locations
@appointments = current_user.appointments
end
def index
end
private
def set_user
@user = User.find_by_email(params[:id])
end
def user_params
params.require(:user).permit(:name, :email, :service, :provider, :password, :password_confirmation)
end
end
세션 컨트롤러
def create
user = User.find_by_email(params[:email])
if user && user.authenticate(params[:password])
session[:user_id] = user.id
redirect_to current_user
else
flash.now[:error] = "There was a problem authenticating."
render action: 'new'
end
end
def destroy
session[:user_id] = nil
redirect_to root_url, notice: "Signed out!"
end
당신은 새 사용자를 저장 한 후 리디렉션 이전 session[:user_id] = user.id
이 필요합니다
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
rescue ActiveRecord::RecordNotFound
end
helper_method :current_user
그냥 사용자가 만든 만들 행동 :
당신은 이런 식으로 뭔가를 시도 할 수 있습니다. 그냥'redirect_to @ user' –