如何使用设计用户访问列

how to access column using devise user

我使用新的迁移添加了以下列:

class AddDetailsToUser < ActiveRecord::Migration
  def change
    add_column :users, :userNum, :integer
    add_column :users, :username, :string
    add_column :users, :fname, :string
    add_column :users, :surname, :string
    add_column :users, :isTeacher, :boolean, :default => false


  end
end

现在 application.html.erb 我想做这样的事情,它试图仅在用户实际上是老师时才显示按钮 :

<% if @user.isTeacher? %>
                    <div class="buttons">
                        <%= button_to(etc ..) %>
                    </div>
<% end %>

但问题是我收到以下错误消息:

undefined method `isTeacher?' for nil:NilClass

如何解决这个问题?

感谢您的宝贵时间

设计有帮助程序让您的视图(和控制器)访问您的用户设备模型 (devise helper)。

在您的情况下,您可以使用 current_user.isTeacher

Devise 为您提供了一个名为 current_your_devise_model_name 的辅助方法,如果您的设计模型是 user 则 current_user,如果您的设计模型是 admin 则 current_admin。在您的情况下,您在@user 中没有任何价值。您基本上需要更新您的 if 条件。我想您需要在用户登录并且是老师时显示此按钮。所以稍微改变一下你的代码

<% if current_user.present? && current_user.isTeacher? %>
    <div class="buttons">
       <%= button_to(etc ..) %>
    </div>
<% end %>

您的代码采用 application.html.erb 布局,这意味着它将在用户未登录且使用相同布局的那些页面中执行。对于更多用户登录方法,您应该检查 this link,因为我们不知道您当前正在使用哪个 rails 版本。