首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在ruby on rails中使用连接表

在ruby on rails中使用连接表
EN

Stack Overflow用户
提问于 2011-09-30 12:58:56
回答 2查看 54.2K关注 0票数 27

假设我有两个数据库:一个用于学生,另一个用于班级。我希望能够‘添加’课程到特定的学生,也能够将学生添加到特定的班级。我假设我需要在这里使用一个连接表,但是我对如何使用它们有点迷惑。我最终希望能够做到以下几点:

  @class.students.find(@student_id)

这会告诉我这个学生是否在班上。我知道班级和学生之间的关系是“has_many”,反之亦然。在迁移文件中执行't.references :students‘可以做到这一点吗?我尝试将该行添加到我的迁移文件中,然后尝试使用上面的语句查找某些内容,但它给出了一个错误。我是RoR的新手,所以我甚至不确定实现这一目标的最佳方式是什么。如有任何帮助,我们不胜感激!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-30 13:12:03

是的,这是一个多对多的关系(班级有很多学生,学生有很多班级)。为此,您将使用has_many :through关系。看看ActiveRecord::Associations的文档(Ctrl-F表示“关联连接模型”)。

在迁移中,t.references :students是您指定belongs_to关系的方式,因为它只添加了一个student_id列(该列只能容纳一个id,即一个学生)。但是,连接模型将有两列:student_idclass_id。(顺便说一下,在Ruby中调用一个模型'Class‘是自找麻烦的。我可以推荐“课程”吗?)

票数 17
EN

Stack Overflow用户

发布于 2015-07-15 01:09:02

这是一个老问题,但以防有人像我一样偶然发现这一点,你现在可以使用relationships has_and_belongs_to_many。所以,是的,您将创建一个连接表:

create_join_table :students, :courses do |t|
  t.integer :student_id
  t.integer :course_id
end

然后在模型中,你会说一个学生has_and_belongs_to_many :courses和一个课程has_and_belongs_to_many :students。不需要创建名为CourseStudent的第三个类。此link包含所有这些信息

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7606124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档