Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

undefined method `empty?' for nil:NilClass how to avoid it

Hi Together I've got this code:

 @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

on my debian vm it works fine but on my live system I got this error:

undefined method `empty?' for nil:NilClass

How can I avoid this?

like image 863
Felix Avatar asked Dec 06 '22 20:12

Felix


1 Answers

If this @coursesFound = @user.available_courses returns an empty activerecord relation.

Then this won't execute

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

Which means when you get here @courseInGroups is nil

if @courseInGroups.empty?
  @courses << course
end

So your quick fix would be

if @courseInGroups && @courseInGroups.empty?
  @courses << course
end
like image 81
j-dexx Avatar answered Dec 25 '22 07:12

j-dexx