0

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

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

为了添加这个新参数,我在 UsersController 中编写了这段代码:

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

我在 routes.rb 中写了这段代码来覆盖它:

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

如此堆栈溢出示例所示:rails 4 和thoughtbot/clearance - 向用户模型添加字段

这是我的 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。谁能告诉我我做错了什么?

4

1 回答 1

0

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

def is_student?
  return :is_student
end
于 2020-11-13T20:05:54.007 回答