gpt4 book ai didi

ruby-on-rails - 在 ruby​​ on rails 中使用连接表

转载 作者:数据小太阳 更新时间:2023-10-29 06:28:40 26 4
gpt4 key购买 nike

假设我有两个数据库:一个用于学生,一个用于类(class)。我希望能够为特定学生“添加”类(class),也能够将学生添加到特定类(class)。我假设我需要在这里使用连接表,但我对如何使用它们有点迷茫。我最终希望能够做类似的事情:

  @class.students.find(@student_id)

这会告诉我学生是否在类。我知道类(class)和学生之间的关系是“has_many”,反之亦然。在迁移文件中执行 't.references :students' 是否可以做到这一点?我尝试将该行添加到我的迁移文件中,然后尝试使用上面的语句查找内容,但它给了我一个错误。我是 RoR 的新手,所以我什至不确定实现这一目标的最佳方法是什么。感谢您的帮助!

最佳答案

@Jordan 所说的一切都是真的,这里是要采取的具体步骤:

  1. 创建 migration : rails g model CourseStudent 为 n:m 关系创建一个连接模型,并迁移到相应的表。
  2. 编辑迁移文件 CreateCourseStudent,使其包含以下内容:

    class CreateCourseStudent < ActiveRecord::Migration
    def change
    create_table :course_students do |t|

    # Your code comes here
    t.integer :student_id
    t.integer :course_id

    # Here comes the generated code
    t.timestamps
    end
    end
    end
  3. 运行迁移:rake db:migrate。因此,连接表现在应该存在于您的数据库中。

  4. 在模型中添加以下代码

    class Course < ActiveRecord::Base
    has_many :course_students
    has_many :students, :through => :course_students
    end

    class Student < ActiveRecord::Base
    has_many :course_students
    has_many :courses, :through => :course_students
    end

    class CourseStudent < ActiveRecord::Base
    belongs_to :student
    belongs_to :course
    end

您现在可以使用方法 belongs_tohas_many 生成的方法:

  • @course.students
  • @student.courses

尝试在 Rails Guides 中找到所有相关事实和片段,在那里你应该找到你需要的所有信息才能走上正轨。祝你好运!

关于ruby-on-rails - 在 ruby​​ on rails 中使用连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7606124/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com