Переписал 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