RailsTutorial.org Упражнение 9.6.2. Я пытаюсь войти с помощью файлов cookie, если установлен флажок «Оставаться в системе», в противном случае войдите в систему с сеансом. Исходя из кода Майкла Хартла, я внес следующие изменения:
Я добавил этот код в форму входа в представлении> сеансы> new.html.erb:
<div class="field">
<%= f.check_box :stay_signed_in %> Stay signed in?
</div>
Я добавил одну строку в контроллер сессий:
def create
session[:staysignedin] = (params[:session][:stay_signed_in] == "1") ? true : false
...
end
И я внес следующие изменения в Помощник по сеансам:
def sign_in(user)
if session[:staysignedin]
cookies.permanent.signed[:remember_token] = [user.id, user.salt]
else
session[:userid] = user.id
end
self.current_user = user
end
def sign_out
if session[:staysignedin]
cookies.delete(:remember_token)
else
session[:userid] = nil
session[:staysignedin] = nil
end
self.current_user = nil
end
def user_from_remember_token
session[:staysignedin] ? User.authenticate_with_salt(*remember_token) : User.find_by_id(session[:userid])
end
Проблема в том, что он всегда ведет себя так, как будто флажок снят, всегда входя в систему с использованием сессии, а не куки, даже когда флажок установлен, и я просто не могу понять, почему