저는 Ruby on Rails를 처음 사용했습니다. 저는 Michel Hartl의 인터넷에서 사용할 수있는 참고서를 통해 그것을 배우고 있습니다. 그러나 사용자가 로그인하는 동안 문제가 발생하면 before_save가 create_remember_token 메서드를 호출하지 않는 것으로 의심됩니다. 나는 아주 오랜 시간이 문제를 디버깅하려고합니다.레일즈 remember_token 세션이 작동하지 않습니다.
user.rb 파일 : 다음과 같이 내 코드는
# == Schema Information
#
# Table name: users
#
# id :integer(4) not null, primary key
# name :string(255)
# email :string(255)
# created_at :datetime not null
# updated_at :datetime not null
# password_digest :string(255)
# username :string(255)
# remember_token :string(255)
#
class User < ActiveRecord::Base
def to_param
username
end
attr_accessible :name, :email, :password, :password_confirmation, :username
has_secure_password
before_save { |user| user.email = email.downcase }
before_save :create_remember_token
private
def create_remember_token
self.remember_token = SecureRandom.urlsafe_base64
end
end
session_helper.rb을
module SessionsHelper
def sign_in(user)
cookies.permanent[:remember_token] = user.remember_token
current_user = user
end
def current_user=(user)
@current_user = user
end
def current_user
@current_user ||= user_from_remember_token
end
def signed_in?
!current_user.nil?
end
private
def user_from_remember_token
remember_token = cookies[:remember_token]
User.find_by_remember_token(remember_token) unless remember_token.nil?
end
end
sessions_controller.rb :
class SessionsController < ApplicationController
def new
end
def create
user=User.find_by_username(params[:session][:username])
if user && user.authenticate(params[:session][:password])
sign_in user
redirect_to "/@/#{params[:session][:username]}"
else
flash.now[:error] = "Login failed! Please try again!"
render 'new'
end
end
def destroy
end
end
나에게 도움을 알려 주시기 바랍니다 문제가있는 곳을 가리킨다. 건배 :)
user_controller.RB : 클래스 UsersController <와 ApplicationController는 데프 새로운 데프 사용자 @ \t = User.find_by_username (PARAMS [: 이름]) 보여 사용자 = User.new 끝 @ \t 끝 데프 사용자 @ \t = 사용자를 만들 .new를 (PARAMS [: 사용자]) \t A =의 PARAMS [: 이름] \t 경우 @ \t \t 플래시 user.save [: 성공] = "! 오신 것을 환영합니다 SocialCrow 이메일 주소를 확인하시기 바랍니다" \t \t redirect_to "/ @/# {PARAMS [: 사용자] [: 사용자 이름]}"다른 \t 이 \t \t이 '새로운' \t 끝 끝 끝 – swaroopsm
그래서 u는 내가이 토큰 동안을 생성 말을 의미 렌더링 가입 절차 – swaroopsm
예. Create 함수의 'if @ user.save ...'호출은 create_remember_token을 포함하여 before_save 콜백을 트리거합니다. 귀하의 회신에 감사드립니다. –