In Ruby on Rails, what kind of design pattern is to use false to denote don't do DB look up and nil to denote ok to look up? -
in restful authentication, found current_user quite intricate that, when @current_user set false, means don't try find user again (usually db), while nil means that's ok, can again in db:
line 8 of lib/authenticated_system.rb
def current_user   @current_user ||= (login_from_session                        || login_from_basic_auth                        || login_from_cookie) unless @current_user == false end the intricate thing is, if tries db login_from_session, etc, , can't find it, final value gets assigned @current_user nil, , method returns nil (which last evaluated value in method).  unless there 2 other places in code elsewhere can set @current_user false, , trigger unless, causing whole statement return nil, while @current_user remains false, , method returns nil...
i speechless code rely on these intricate facts.  false has special meaning, , nil has special meaning in code, not documented, not commented, , current_user can nil, while @current_user can continue false.  design pattern, people familiar , know well? 
restfulauthentication considered quite old , nasty @ point in rails history, partly because of code pointing out.
i think people advise go more modern authentication solution such devise or authlogic.
Comments
Post a Comment