[ruby-on-rails] Rails : 악명 높은 “current_user”는 어디에서 왔습니까?
최근에 Rails를 살펴 보았는데 current_user
. 이것은 Devise에서만 제공됩니까? Devise를 사용하더라도 수동으로 정의해야합니까? 사용하기위한 전제 조건이 있습니까 current_user
(예 : 세션, 사용자 등)?
답변
여러 보석으로 정의됩니다. 예 : Devise
일반적으로 로그인 후 세션의 어딘가에 user_id를 저장해야합니다. 또한 앱에 사용자, 인증 등이 있고 필요하다고 가정합니다.
일반적으로 다음과 같습니다.
class ApplicationController < ActionController::Base
def current_user
return unless session[:user_id]
@current_user ||= User.find(session[:user_id])
end
end
이것은 User 클래스가 존재한다고 가정합니다 #{Rails.root}/app/models/user.rb
.
업데이트 됨 : 현재 사용자가 없을 때 추가 데이터베이스 쿼리를 방지합니다.
답변
예, current_user
사용합니다 session
. 자체 인증을 롤링하려는 경우 애플리케이션 컨트롤러에서 유사한 작업을 수행 할 수 있습니다.
def current_user
return unless session[:user_id]
@current_user ||= User.find(session[:user_id])
end