diff options
author | tkimia <tkimia@purdue.edu> | 2014-04-03 16:49:15 -0400 |
---|---|---|
committer | tkimia <tkimia@purdue.edu> | 2014-04-03 16:49:15 -0400 |
commit | 25cfa69883a5c74b2a6e6a5021c53fd95202c234 (patch) | |
tree | f4356eab1caa58687997817079d304c32b792ec8 | |
parent | 6cc7eb9e419c219d82d318ebb1bab8a853f73da5 (diff) | |
parent | d6009eddd6f67a9414ff7d707ae82c053e6653ad (diff) |
Merge branch 'master' of https://github.com/LukeShu/leaguer
-rw-r--r-- | app/helpers/sessions_helper.rb | 4 | ||||
-rw-r--r-- | app/models/user.rb | 15 |
2 files changed, 17 insertions, 2 deletions
diff --git a/app/helpers/sessions_helper.rb b/app/helpers/sessions_helper.rb index 54e4b0d..89e5ef3 100644 --- a/app/helpers/sessions_helper.rb +++ b/app/helpers/sessions_helper.rb @@ -18,7 +18,7 @@ module SessionsHelper def current_user @token ||= Session.hash_token(cookies[:remember_token]) @session ||= Session.find_by(token: @token) - @current_user ||= (@session.nil? ? nil : @session.user) + @current_user ||= (@session.nil? ? NilUser.new : @session.user) end # checks if someone is currently signed in @@ -30,7 +30,7 @@ module SessionsHelper if signed_in? @session.destroy end - @current_user = nil + @current_user = NilUser.new cookies.delete(:remember_token) end diff --git a/app/models/user.rb b/app/models/user.rb index 277d885..016c155 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -91,3 +91,18 @@ class User < ActiveRecord::Base validates :password, length: { minimum: 6 } end +class NilUser + def nil? + return true + end + def can?(action) + return false + end + def method_missing(name, *args) + # Throw an error if User doesn't have this method + super unless User.new.respond_to?(name) + # User has this method -- return a blank value + # 'false' if the method ends with '?'; 'nil' otherwise. + name.ends_with?('?') ? false : nil + end +end |