简体   繁体   中英

Rails: where does the infamous “current_user” come from?

I've been looking around recently into Rails and notice that there are a lot of references to current_user . Does this only come from Devise? and do I have to manually define it myself even if I use Devise? Are there prerequisites to using current_user (like the existence of sessions, users, etc)?

It is defined by several gems, eg Devise

You'll need to store the user_id somewhere, usually in the session after logging in. It also assumes your app has and needs users, authentication, etc.

Typically, it's something like:

class ApplicationController < ActionController::Base
  def current_user
    return unless session[:user_id]
    @current_user ||= User.find(session[:user_id])
  end
end

This assumes that the User class exists, eg #{Rails.root}/app/models/user.rb .

Updated: avoid additional database queries when there is no current user.

Yes, current_user uses session . You can do something similar in your application controller if you want to roll your own authentication:

def current_user
  return unless session[:user_id]
  @current_user ||= User.find(session[:user_id])
end

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM