Не могу сказать наверняка, но похоже, что это часть учебного кода, которая терпит неудачу
<% if current_user.admin? %>
Если никто не вошел на эту страницу, current_user
равен нулю (я полагаю) и поэтому не может вызывать метод admin?
.
Попробуйте заменить это на
<% if current_user && current_user.admin? %>
(и аналогично заменить другую логику current_user на странице).
Это работает?
Кроме того, если вы закомментируете этот тест, пройдет ли тот же тест с зарегистрированным пользователем?
После более внимательного изучения, не обращайте внимания на вышесказанное: тест не пройден, потому что в истинном стиле TDD тест пишется перед кодом. Sot шаги:
- Написать тест
- Смотреть, как это не получается
- Введите код для прохождения теста
- Смотреть тестовый проход
Вы еще не написали код для проверки, является ли пользователь администратором. Напишите код в Листинге 10.41 учебника, и тест должен пройти.
Однако может потребоваться поставить
def admin_user
redirect_to(root_path) unless current_user && current_user.admin?
end
В фильтре before (обратите внимание, что мы проверяем current_user перед тем, как узнать, является ли он администратором).