一个老师,可以教多个孩子(教一门课程,但是有好多学生来听这个课程)
我们往往会这样做:
students有id和name两个字段
teachers有id和name两个字段
放在任何一个表中都不合适,这是我们需要一张中间表,也就是桥梁表。
lessons有id和name和student_id和teacher_id
原始SQL:
select teachers.*, students.*, lessons.* from lessons from teachers , join teachers on lessons.teacher_id = teachers.id join students on lessons.student_id = students.id where students.name = '小王'
Ruby代码:
class Student has_many :lessons has_many :teachers, :through => :lessons end
提示:has_many :teachers, :through => :lessons 相当于
has_many :teachers, :class => 'Teacher', :foreign_key => 'teacher_id', :throught => :lessons
class Teachers
has_many :lessons
has_many :students, :through => :lessons
end
查看小王的老师有哪些,同上面的原始SQL语句。
Student.find_by_name('小王').teachers
以上就是本文给大家分享的全部内容了,给出的示例也非常的简单易懂,希望大家能够喜欢。










