2015-07-14 3 views
-2

Я дал этот кодКак сушить данный код запроса в рельсах

@classes = Class.includes(:student_classes).where(:employee_id => current_employee.id) 
    @students = {} 

    unless @classes.blank? 
     @classes.each { |class| 
     unless class.student_classes.blank? 
      class.student_classes.each { |std| 
      @students[std.student.id] = std.student.name 
      } 
     end 
     } 
    end 

для извлечения @students. Пожалуйста, расскажите мне, как высушить этот запрос. Заранее спасибо.

+0

Я полагаю, ваш класс объявляется с '' 'has_many: student_classes'''. Просто добавьте '' 'has_many: students, через:: student_classes''' и вызовите' '' Class.where (employee_id: current_employee.id) .students'''. Для получения дополнительной информации вы можете (и должны) прочитать эту статью http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association. – romainsalles

+0

Да, именно у меня есть эта ассоциация –

ответ

0

Лучший способ сделать это:

Student 
    .joins(student_classes: [:class]) 
    .where(classes: {employee_id: current_employee.id}) 
Смежные вопросы