Rails - 这两个模型都是has_many

时间:2014-09-28 20:37:49

标签: ruby-on-rails database ruby-on-rails-4 rails-activerecord

抱歉,我在绘制数据库方面不是很先进

我有一个类似的模型:教师可以有很多学生,学生可以有很多老师。那我该怎么做呢?如果一个学生只有一个老师,我知道我会设置一个属性,如:teacher_id:integer,那么当我想创建一个学生时,它会与此类似

Student.create(:teacher_id => id)

或类似的查询:

Student.where(teacher_id: id)
Teacher.find(student.teacher_id)

但如果两者都是has_many relationship

,我不确定如何实现这个目标

3 个答案:

答案 0 :(得分:1)

您可以根据需要使用rails has_and_belongs_to_many关系。请查看此链接以供参考:http://guides.rubyonrails.org/association_basics.html#has-and-belongs-to-many-association-reference

你需要像这样使用这种关系:

<强> teacher.rb

has_and_belongs_to_many :students

<强> student.rb

has_and_belongs_to_many :teachers

然后您需要添加迁移以创建包含teacher_id和student_id

的连接表

您应按字母顺序创建迁移名称,如下所示:

rails g migration create_join_table_for_students_teachers student_id:integer teacher_id:integer

然后rake db:migrate

然后您可以访问单个教师的学生,如teacher.students等,

希望这可能会以某种方式帮助您,请通过参考链接

答案 1 :(得分:0)

您正在描述一个已拥有并且属于多(HABTM)的关系,Rails以两种方式支持这些关系:has_and_belongs_to_manyhas_many :through。您可以在Active Record Associations Rails Guide中了解它们,它还会为您提供技巧以及如何选择适合您应用的提示。

答案 2 :(得分:0)

更好地使用 has_many:通过关系。