Как проверить логический атрибут в операторе if else?

#ruby-on-rails

#ruby-on-rails

Вопрос:

У меня есть модель пользователя со столбцом superuser:boolean . Я также использую панель навигации, где я хочу иметь три разных представления в соответствии с этими условиями:

  • Когда кто-то не вошел в систему
  • Когда кто-то входит в систему как пользователь
  • Когда кто-то подписан как пользователь, а логическое значение для суперпользователя равно true

     <% if (user_signed_in? amp;amp; user.super_user?) %>
    
    <% elsif (user_signed_in?) %>
    
    <% else %>
      

Я получаю сообщение об ошибке: «неопределенная локальная переменная или метод `user'»

Как я могу проверить, является ли столбец super_user пользователя true или false?

Ответ №1:

1) Похоже, вы используете Devise gem (из-за user_signed_in? ). В данном случае это current_user помощник, который вы ищете, а не user .

2) Вам не нужно ? здесь current_user.super_user — вызывается столбец super_user , а не super_user? .

 <% if (user_signed_in? amp;amp; current_user.super_user) %>

<% elsif (user_signed_in?) %>

<% else %>
  

Комментарии:

1. @trickydiddy никаких проблем, не забудьте принять ответ, если это помогло вам (я знаю, что вы еще не можете ~ 10 минут) 🙂