Ruby on rails Rails协会:师生班

Ruby on rails Rails协会:师生班,ruby-on-rails,Ruby On Rails,我仍在学习如何利用Rails进行创新,并可以为以下Rails协会提供一些最佳实践指导: 我有三个模型,老师,学生和班级。教师可以教授任意数量的班级,学生可以参加任意数量的班级,一个班级只能由一名教师授课,但可以有1-5名学生 我的第一个假设是使用以下公式: 类别: 你属于老师 你有很多学生吗 教师: 有很多:学生通过=>课程 学生: 有很多:通过=>课程的教师 我不知道这是否合适,我也看到了加入表格的建议。任何指导都将不胜感激 更新:根据下面有用用户的反馈,我建议以下解决方案。有人能核实一下吗?

我仍在学习如何利用Rails进行创新,并可以为以下Rails协会提供一些最佳实践指导:

我有三个模型,老师,学生和班级。教师可以教授任意数量的班级,学生可以参加任意数量的班级,一个班级只能由一名教师授课,但可以有1-5名学生

我的第一个假设是使用以下公式:

类别: 你属于老师 你有很多学生吗

教师: 有很多:学生通过=>课程

学生: 有很多:通过=>课程的教师

我不知道这是否合适,我也看到了加入表格的建议。任何指导都将不胜感激

更新:根据下面有用用户的反馈,我建议以下解决方案。有人能核实一下吗?因为一个学生可以有多个班级并且属于一个班级,反之亦然,所以我需要两个联接表

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
class ClassRoomEnrollment:教室
结束
班级学生:教室
从教室到教室的注册
结束

班级不是一个好名字,教室更好

class ClassRoom < ActiveRecord::Base
  belongs_to :teacher
  belongs_to :student # if I have well understand, this is the right association

  #some validations rules
  validates :<fieldname>, :<rule> => <value>, ...

  #callback like :before_save or :after_save, ....
end

class Teacher < ActiveRecord::Base
  has_many :students :through => :classrooms, :depend => :destroy

  #some validations rules
  validates :<fieldname>, :<rule> => <value>, ...

  #callback like :before_save or :after_save, ....
end

class Student < ActiveRecord::Base
  has_many :teachers :through => :classrooms, :depend => :destroy

  #some validations rules
  validates :<fieldname>, :<rule> => <value>, ...

  #callback like :before_save or :after_save, ....
end

我希望这对你有帮助。

你错过了
学生:上了很多课。基本上,学生和班级之间的关系是HABTM。其他一切看起来都很好。谢谢@Nitish。我是否需要添加教师has\u many:classes?对于学生来说,has\u many:classes通过我添加的:classes关系替换has\u many教师?是的,您还需要
教师has\u many:classes
。对于学生们,你们现在拥有的一切都很好。谢谢@fellons!两个问题。首先,为什么一个教室属于一个学生,而没有多少学生?同样在上面的例子中,我可以调用student.questions.first.teacher(基本上与上面相反)吗?最后,我需要添加任何外部索引吗?事实上,仔细想想@fellons,我想我需要在教室和学生之间创建一个连接表。在上述方法中,将无法访问教师、教室、学生。我认为我需要为教室和学生建立一种“有很多:通过”的关系。参见我的更新以实现关联:通过教师和教室之间以及学生和教室之间,必须有一个班级(教室),该班级将学生id和教师id分组(参见第4.2章)。不需要创建索引,因为ID字段之间的连接已经被索引。连接是双向的(通过课堂):student.questions.first.teacher(或简单的student.teachers)或teacher.students。我理解,但如果课堂要有任何其他字段(如房间、时间等)我认为最好像我在编辑的评论中所做的那样将其作为一个单独的类。要选择某个特定教室的学生或教师,可以使用两种方法:(1)创建一个classe ClassName has_many:classes并在课堂上添加belown_to:ClassName(2)(即使它会产生数据冗余:不推荐)将字段:classname添加到课堂中,并在每次使用课堂名称填充它。以这种方式,使用一个教室。其中(:classname=>'
teacher.classrooms.first.students e.g.