Ruby on rails 过度编写的thoughtbot/clearance user.rb不工作

Ruby on rails 过度编写的thoughtbot/clearance user.rb不工作,ruby-on-rails,attributes,clearance,thoughtbot,Ruby On Rails,Attributes,Clearance,Thoughtbot,我想给我的用户添加一个新的布尔属性:is_student 我的项目有两类用户:学生和教师。如果是学生,学生应该是真的,如果是教员,学生应该是假的 要添加此新参数,我在UsersController中编写了以下代码: def user_params params[:user].permit(:email, :password, :is_student) end 我在routes.rb中编写了这段代码来覆盖它: resources :users, controller: :users, onl

我想给我的用户添加一个新的布尔属性:is_student

我的项目有两类用户:学生和教师。如果是学生,学生应该是真的,如果是教员,学生应该是假的

要添加此新参数,我在UsersController中编写了以下代码:

def user_params
  params[:user].permit(:email, :password, :is_student)
end
我在routes.rb中编写了这段代码来覆盖它:

resources :users, controller: :users, only: :create
如本堆栈溢出示例所示:

这是我的user.rb类,用于添加我的新属性“is_student”:

class用户
现在,我将它设置为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。有人能告诉我我做错了什么吗?

在user.rb中,我只需要将“@”替换为“:”在我的is_学生中?方法

def is_student?
  return :is_student
end

这不是一个解决办法<代码>是学生吗?
现在将始终是“真实”的,因为任何不是
nil
false
的值都将计算为“真实”值。您的问题实际上是实例变量
@is_student
是在类作用域中声明的,而不是在这个实例作用域中声明的。您需要做的是解释如何确定用户是“学生”还是“教员”,并在需要时使用该信息创建布尔方法
def is_student?
  return :is_student
end