Переписал thinkbot/ клиренс user.rb не работает

Я хотел добавить своему пользователю новый логический атрибут: is_student

В моем проекте 2 типа пользователей: студенты и преподаватели. Если is был студентом, is_student должен быть истинным, а если это faculty, is_student будет ложным.

Чтобы добавить этот новый параметр, я написал этот код в UsersController:

def user_params
  params[:user].permit(:email, :password, :is_student)
end

И я написал этот код в routes.rb, чтобы его перезаписали:

resources :users, controller: :users, only: :create

как показано в этом примере переполнения стека: рельсы 4 и Thinkbot / Clear - добавление полей в пользовательскую модель

Это мой класс user.rb для добавления моего нового атрибута is_student:

class User < ActiveRecord::Base
  include Clearance::User
    
  @is_student = true
  
  def is_student?
    return @is_student
  end
  
end

Прямо сейчас я установил для него значение true, чтобы убедиться, что он работает, а в настоящее время - нет. Я вижу, что это не работает, потому что, когда я запускаю свое приложение rails, у меня в качестве главной страницы есть следующая:

<% if signed_in? %>
  
  <% if current_user.is_student? %>
    <p> signed in and is student </p>
  <% end %>

  <p> signed in but not student </p>

<% else %>
  <p> not signed in </p>
<% end %>

Из этого кода: я вижу "вошел в систему, но не студент", хотя для is_student по умолчанию должно быть установлено значение true. Может ли кто-нибудь сказать мне, что я сделал не так?

1 ответ

В user.rb мне просто нужно было заменить "@" на ":" в моем is_student? метод.

def is_student?
  return :is_student
end
Другие вопросы по тегам