创建具有一对多关系的新表



我有一个使用 Rails 2 的旧 rails 项目。 已经有模型类Student.在数据库中,有一个表students。现在,我需要实现每个学生可以拥有多门课程。 这意味着我需要在数据库中有一个新表,该表courses表,并且从学生到课程具有一对多关系。

如何创建迁移文件来做到这一点?

Rails 2 没有通过迁移生成器创建关联的选项,因此您必须采用更手动的方法。

您可以这样创建迁移:https://www.tutorialspoint.com/ruby-on-rails-2.1/rails-migrations.htm

您需要将列student_id添加到列类型为 integercourses表中

然后将以下内容添加到Student模型中:

has_many :courses

如果你实际使用的是 Rails 2.3,这应该不会太难

TBH 如果你不是至少在 2.3 上,那么你可能应该完全重新创建这个项目......

1.( 使用 ruby script/generate model Course name:string description:text student_id:bigint 生成迁移,应如下所示:

class CreateCourses < ActiveRecord::Migration
  def self.up
    create_table :courses do |t|
      t.string :name
      t.text :description
      t.bigint :student_id
      t.timestamps
    end
  end
  def self.down
    drop_table :courses
  end
end

2.( 在项目目录中找到名为 course 的新创建的 MODEL,并将关联添加到文件中:

belongs_to :student

3.( 在项目文件夹中找到 STUDENT 模型,并向其添加has_many关联:

has_many :students

4.( 在终端中,cd到项目文件夹并运行rake db:migrate

你应该很高兴去之后! 以下是 Rails 2.3 关联的参考: https://guides.rubyonrails.org/v2.3/association_basics.html

最新更新