2011-01-19 4 views
0

Я следую учебник Майкл Hartl и я застрял в главе 9.Рубин на Rails Tutorial Майкл Hartl - глава 9 - Рубин 2,3

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

Защиту signed_in? ! Current_user конец

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

спасибо в продвинутом состоянии!

ответ

1

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

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

Привет, я пробовал с! current_user, также с !! current_user и withou any!. Ничего не получилось. Я все еще не вижу, что я зарегистрирован или нет. – Heber

+0

Я написал здесь неправильно, я на самом деле написал то же самое, что и в учебнике. Я протестировал таким образом:! Current_user.nil ?, но он не работает. – Heber

+0

Измените свой вопрос и отправьте код 'current_user', а также где вы вызываете' signed_in? '. Там что-то не так. –

0

У меня была аналогичная проблема и я решил работать назад.

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. Для меня маркер был ошибочно написан и исправил его.

1

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

def signed_in? 
    !current_user.nil? 
end 
Смежные вопросы