【发布时间】:2014-11-22 11:49:22
【问题描述】:
我仍在学习如何使用 Rails 获得创意,并且可以使用一些关于以下 Rails 协会最佳实践的指导:
我有三个模型,教师、学生和班级。教师可以教任意数量的班级,学生可以加入任意数量的班级,一个班级只能由一名教师授课,但可以有1-5名学生。
我的第一个假设是使用以下内容:
类: 属于老师 has_many 学生
教师: has_many:学生通过 => 课程
学生: has_many: 教师通过 => 课程
我不知道这是否合适,我已经看到了加入表格的建议。任何指导将不胜感激 !
更新:鉴于以下有用用户的反馈,我建议以下解决方案。有人可以验证一下吗?因为一个学生可以有多个班级并属于一个班级,反之亦然,我需要两个联接表
class ClassRoomEnrollment < ActiveRecord::Base
belongs_to :students
belongs_to :classrooms
end
class ClassRoom < ActiveRecord::Base
belongs_to :teacher
has_many :students through: classroomenrollment
end
class Teacher < ActiveRecord::Base
has_many :students :through => :classrooms
end
class Student < ActiveRecord::Base
has_many :teachers :through => :classrooms
has_many :classrooms through: classroomenrollment
end
【问题讨论】:
-
你错过了
Student: has_many :classes。基本上学生和班级之间的关系是HABTM。其他一切看起来都很好。 -
谢谢@Nitish。我还需要添加 Teacher has_many :classes 吗?
-
对于学生来说,has_many: classes 是否通过我添加的 :classes 关系替换了 has_many 教师?
-
是的,您还需要
Teacher has_many :classrooms。对于学生来说,你目前拥有的一切都很好。
标签: ruby-on-rails