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.