回答:
それはいくつかの宝石、例えば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
。
更新:現在のユーザーがいない場合、追加のデータベースクエリを回避します。
session
Railsに組み込まれています。デフォルトでは、リクエスト間のクライアントの状態を維持するためにCookieを使用します。詳しくは、guides.rubyonrails.org / security.html#sessionsをご覧ください。
return unless session[:user_id]
ザックの回答に示されているように含めてください。これがないと、if current_user
サインアウト中のすべてのチェックで別のデータベースクエリがトリガーされます。
はい、current_user
使用しsession
ます。独自の認証をロールバックしたい場合は、アプリケーションコントローラで同様のことを行うことができます。
def current_user
return unless session[:user_id]
@current_user ||= User.find(session[:user_id])
end
session
params
複数のリクエストに対して持続することを除いて、のようなものです。これを使用して、個々のユーザーに固有のあらゆる種類の永続的なパラメーターを保存できます(セッションが期限切れになるか、ログアウトするまで)。詳細については、こちらをご覧ください。ActionController:セッションへのアクセス