我仍在学习如何使用 Rails 发挥创意,并且可以使用以下 Rails 协会的最佳实践指南:
我有三个模型,教师、学生和类(class)。教师可以教授任意数量的类(class),学生可以加入任意数量的类(class),一个类(class)只能由一名教师教授,但可以有 1-5 名学生。
我的第一个假设是使用以下内容:
类: 属于老师 有_很多学生
教师: has_many:学生通过 => 类(class)
学生们: has_many: 教师通过 => classes
我不知道这是否合适,我已经看到了加入表的建议。任何指导将不胜感激 !
更新:鉴于以下有用用户的反馈,我建议采用以下解决方案。有人可以验证这一点吗?因为一个学生可以有多个类(class),属于一个类(class),反之亦然,所以我需要两个连接表
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 不是一个好名字,ClassRoom 更好
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
通过关联(has_many、has_one、belongs_to)自动创建通过表的连接。你可以访问一个老师的所有学生,比如
teacher.classrooms.first.students e.g.
希望对你有帮助
关于ruby-on-rails - Rails 协会 : Teacher Student Classes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27077040/