Учебник по Ruby on Rails Майкла Хартла - глава 9 - Ruby 2.3 - PullRequest
0 голосов
/ 19 января 2011

Я следую учебнику Майкла Хартла и застрял в главе 9.

Мне нужна эта функция для работы:

def подписан_ин? !текущий пользователь конец

но эта функция всегда возвращает false даже когда я вошел. Я прошу прощения за этот простой вопрос, но я начинающий, а также провести много время пытаюсь понять это. Я использую ruby ​​1.8.7 и рельсы 2.3.8

спасибо заранее!

Ответы [ 3 ]

1 голос
/ 19 августа 2013

Вы должны добавить .nil? для current_user вот так:

def signed_in?
    !current_user.nil?
end
1 голос
/ 19 января 2011

Я подозреваю, что код должен читать

def signed_in?
  current_user
end

Помещение ! перед вызовом current_user может читаться как "верните истину, если это НЕ current_user".

Ваш код внутри SessionsHelper содержит опечатку.Файл cookie :remember_token не сохраняется в методе sign_in.Следует читать:

def sign_in(user)
  user.remember_me!
  cookies[:remember_token] = { :value => user.remember_token,
                               :expires => 20.years.from_now.utc }
  self.current_user = user
end

Не :remember_toker.

0 голосов
/ 08 февраля 2012

У меня была похожая проблема, и я решил работать в обратном направлении.

1) def signed_in? !current_user.nil? end. Поэтому я искал объявление и определение current_user, связанного со входом

2) Здесь: def sign_in(user) cookies.permanent.signed[:remember_token] = [user.id, user.salt] self.current_user = user end. Для меня токен был написан с ошибкой, и это исправило его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...