SixArm.com » Ruby » CurrentUser module with current_user methods
- Author
-
Joel Parker Henderson, [email protected]
- Copyright
-
Copyright © 2005-2011 Joel Parker Henderson
- License
-
See LICENSE.txt file
Get and set the current user in the Rails session array.
When you set the current user, this does:
- @current_user = user
- @current_user_id = user.id
- session[:current_user_id] = user.id
Example code
joe = User.find(123)
self.current_user = joe
=>
@current_user == joe
@current_user_id == 123
session[:current_user_id] == 123
Example controller
class MyController < ApplicationController
def sign_in(user)
self.current_user = user
end
def sign_out
self.current_user = nil
end
def is_anyone_using_this?
current_user?
end
end
Example of reloading
For fast speed, we memoize current_user and current_user_id: we use fast instance variables @current_user and @current_user_id rather than reading the slower session each time.
To reload @current_user and @current_user_id from session, we use the :reload parameter like this:
current_user(:reload => true)
Why use the self prefix?
When we set variables, we must use the “self” prefix because Ruby uses this to do method dispatch.
Right:
self.current_user = joe
Wrong:
current_user = joe