user - rails tutorial: cookie doesn't match remember token -
i doing michael hartl's rails tutorial chapter 8. when try find user remember_token stored in browser cookie isn't working. find_by method returns nil. have been trying debug looking @ remember token cookie stored on browser , comparing remember token stored in user database. don't match , don't know why. here code session helper.
module sessionshelper def sign_in(user) remember_token = user.new_remember_token cookies.permanent[:remember_token] = remember_token user.update_attribute(:remember_token, user.encrypt(remember_token)) self.current_user = user end def signed_in? !current_user.nil? end def current_user=(user) @current_user = user end def current_user #remember_token = user.encrypt(cookies[:remember_token]) remember_token = "71e45660fbaa69bad9fb55b912f80122a584f6af" #@current_user ||= user.find_by(remember_token: remember_token) @current_user ||= user.find_by_remember_token(remember_token) end end
i have been tweaking try , figure out going on. debug commented out normal lines , set remember token explicitly value see in database - app works. when compare value of cookie stored in browser value of remember token stored in database don't match.
another thing noticed can't make call user_find_by. error says doesn't recognize method commented out. can call user.find_by_remember_token. possible have wrong version of installed?
i have tried resetting database - can see , looks has right columns.
here _header.html.erb code:
<header class="navbar navbar-fixed-top navbar-inverse"> <div class="navbar-inner"> <div class="container"> <%= link_to "sample app", root_path, id: "logo" %> <nav> <ul class="nav pull-right"> <li><%= link_to "home", root_path %></li> <li><%= link_to "help", help_path %></li> <% if signed_in? %> <li><%= link_to "users", '#' %></li> <li id="fat-menu" class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown"> account <b class="caret"></b> </a> <ul class="dropdown-menu"> <li><%= link_to "profile", current_user %></li> <li><%= link_to "settings", '#' %></li> <li class="divider"></li> <li> <%= link_to "sign out", signout_path, method: "delete" %> </li> </ul> </li> <% else %> <li><%= link_to "sign in", signin_path %></li> <% end %> </ul> </nav> </div> </div> </header>
it looks problem line 20 in sessionshelper. should be:
@current_user ||= user.find_by(remember_token: remember_token)
instead of passing remember token user.find_by() method you're attempting call method find_by_remember_token, doesn't exist.
Comments
Post a Comment