[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


답변