I’ve a current_user method to handle authentication.
application_controller.rb
protect_from_forgery
helper_method :current_user
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
but when I try to acces a to a page I get the following error:
Couldn't find User with id=1
app/controllers/application_controller.rb:10:in `current_user'
How can I pass @current_user a sort of default value so if there’s no user it will redirect to login page.
Thanks for helping.
It looks like your session contains old data, specifically an id (1) of a user which no longer exists. Try handling the
RecordNotFoundexception raised by ActiveRecord, and returning nil:To redirect, you should add a second
before_filterwhich checks for a user and handles redirecting to the login path:Remember to omit
require_userfor your login action by addingskip_before_filter :require_loginto whichever controller manages your authentication.