Я не совсем понял всю логику структуры вашего класса. Почему вы не соединяете учеников прямо в класс? И как класс может иметь много уровней. Я имею в виду, если у вас есть Math1 и Math2, это разные классы, верно? Или у тебя Math1,2,3?
Ну, во всяком случае, вот решение, если вы хотите использовать текущие ассоциации, я надеюсь, что оно соответствует вашим потребностям:
Class Student
...
def available_classes
Class.find(:all,
:include => {:levels => {:students_levels => :student}},
:conditions => ["students.id = ?", self.id])
end
И извините, это все еще в формате Rails 2.x ...