1. ホーム
  2. ruby-on-rails

[解決済み] Rails:悪名高き「current_user」はどこから来たのか?

2022-02-16 13:17:29

質問

最近、Railsについていろいろ調べているのですが、その中で current_user . また、Deviseを使用する場合でも、自分で手動で定義しなければならないのでしょうか?を使用するための前提条件はありますか? current_user (セッション、ユーザーなどの存在)ですか?

どのように解決するのですか?

Deviseなど、いくつかのgemで定義されています。

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 .

更新:現在のユーザーが存在しない場合に、追加のデータベースクエリーを行わないようにしました。