抱歉,我在绘制数据库方面不是很先进
我有一个类似的模型:教师可以有很多学生,学生可以有很多老师。那我该怎么做呢?如果一个学生只有一个老师,我知道我会设置一个属性,如:teacher_id:integer,那么当我想创建一个学生时,它会与此类似
Student.create(:teacher_id => id)
或类似的查询:
Student.where(teacher_id: id)
Teacher.find(student.teacher_id)
但如果两者都是has_many relationship
,我不确定如何实现这个目标答案 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_many
或has_many :through
。您可以在Active Record Associations Rails Guide中了解它们,它还会为您提供技巧以及如何选择适合您应用的提示。
答案 2 :(得分:0)
更好地使用 has_many:通过关系。