ruby-on-rails - Rails 协会 : Teacher Student Classes

标签 ruby-on-rails

我仍在学习如何使用 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/

相关文章:

ruby-on-rails - 你如何让一个对象观察/订阅自己来观察某个领域?

ruby-on-rails - 引用列名称

ruby-on-rails - 如何在使用 vim 时快速访问 ruby​​ 和 rails 文档?

ruby-on-rails - 即将创建我自己的网上商店?优点和缺点

ruby-on-rails - 为什么 Foo.first 返回最后一条记录?

ruby-on-rails - 延迟作业排除队列

ruby-on-rails - 哪个给我更好的性能 Activerecord find_by 或在哪里?

ruby-on-rails - rails 4 中有序的 has_many 关联

javascript - npm install 是否意味着该脚本仅适用于 Node.js

ruby-on-rails - 如何设置 'workers' 服务器负责从其他服务器运行作业