class Teacher < ActiveRecord::Base
has_many :students
end
class Class <ActiveRecord::Base
has_many :students
end
class Student <ActiveRecord::Base
belongs_to :teacher
belongs_to :class
end
我想创建一个教师名单,并在他们的名字下面:这个教师有学生的班级表和这些学生的数量。或多或少这样的事情:
Teacher XYZ:
Class 1A | 3 students
Class 3D | 2 students
我如何检查教师是否有来自每个班级的学生,然后只计算属于这个特定教师和班级的学生?
答案 0 :(得分:0)
您可以执行查询以急切加载课程和学生:
@teachers = Teacher.includes(students: :class)
然后我会在视图中使用group_by
按班级对学生进行分组。
<% @teachers.each do |teacher| %>
<%= teacher.name %>
<% teacher.students.group_by(&:class).each do |class, students| %>
<%= class.name %> | <%= students.size %>
<% end %>
<% end %>
我认为老师和班级都有名字。可能有更好的方法使用像has_many这样的东西,但我现在看不到它。
另一方面,你不应该命名你的对象Class
它会给你带来很多我想过的问题,因为它已经在ruby中定义了http://ruby-doc.org//core-2.2.0/Class.html。我称之为类似于SchoolClass以避免冲突。