Вы можете переместить всю эту логику в метод для пользователя:
class User < ActiveRecord::Base
def courses
if self.courses.empty?
@courses = Course.all
else
@courses = Course.where("id not in (?)", current_user.courses)
end
end
end
Тогда в вашем контроллере:
@courses = current_user.courses
Вы также можете пересмотреть свою схему и, возможно, вообще избавиться от if / else.