Friday, 11 August 2017

ruby on rails - 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?


Answer



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

No comments:

Post a Comment

casting - Why wasn&#39;t Tobey Maguire in The Amazing Spider-Man? - Movies &amp; TV

In the Spider-Man franchise, Tobey Maguire is an outstanding performer as a Spider-Man and also reprised his role in the sequels Spider-Man...