我有两种类型的用户:经理和员工。我为它们使用了一个用户控制器。
我所做的是将manager_id添加到用户表中,并将以下内容添加到用户模型中:
class User < ActiveRecord::Base
has_many :employees, :class_name => 'User', :foreign_key => :manager_id
belongs_to :manager, :class_name => 'User'
听起来很简单。
但现在我想定义用户类型。如果用户有经理,他就是雇员。如果用户没有经理,他就是经理。
我需要将哪些内容添加到模型中,以便在我的视图中引用用户类型,如:
<% if current_user.manager? %>
You are a manager.
<% else %>
You are not a manager.
<% end %>
我尝试在user.rb模型中定义用户类型,但我找到了一个未定义的方法&#39;经理?&#39;为零:NilClass&#34;错误:
def manager?
manager_id.nil?
end
def employee?
!manager?
end
答案 0 :(得分:1)
在这种情况下,您的current_user
对象为nil
,这会导致您收到错误消息。在尝试调用current_user
上的方法之前,您需要先检查用户是否已登录。
答案 1 :(得分:1)
像Ryan Bigg所说,你需要稍微查看一下错误信息。并不是manager?
作为User
实例上的方法不存在,而是Nil
上不存在current_user
。如果没有current_user
,nil
会返回manager?
,您可以在其中调用<% if current_user && current_user.manager? %>
Manager!
<% elsif current_user %>
Not a manager, but a user!
<% else %>
Not even a user.
<% end %>
。
请尝试以避免此错误:
{{1}}