未定义的方法`空?' 对于nil:NilClass如何避免它

Fel*_*lix 4 ruby ruby-on-rails ruby-on-rails-4

大家好我有这个代码:

 @coursesFound = @user.available_courses
@courses = []

for course in @coursesFound do
  @courseInGroups = course.user_groups
  for group in @courseInGroups do
    @group = UserGroup.find group.id
    if @group.users.map { |u| u.id }.include? @user.id
      @courses << course
      break
    end
  end
end

# Wenn ein Kurs keiner Gruppe hinzugefügt wurde
if @courseInGroups.empty?
  @courses << course
end
Run Code Online (Sandbox Code Playgroud)

在我的debian vm它工作正常但在我的实时系统上我得到了这个错误:

undefined method `empty?' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)

我怎么能避免这个?

j-d*_*exx 8

如果@coursesFound = @user.available_courses返回空的activerecord关系.

然后这将不会执行

for course in @coursesFound do
  @courseInGroups = course.user_groups
  for group in @courseInGroups do
    @group = UserGroup.find group.id
    if @group.users.map { |u| u.id }.include? @user.id
      @courses << course
      break
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

这意味着当你到达这里@courseInGroups是零

if @courseInGroups.empty?
  @courses << course
end
Run Code Online (Sandbox Code Playgroud)

所以你的快速解决方案就是

if @courseInGroups && @courseInGroups.empty?
  @courses << course
end
Run Code Online (Sandbox Code Playgroud)

  • 或者,您可以将“空”替换为“空白”。 (2认同)