用一对多的关系创建一个新表

时间:2019-02-07 16:18:53

标签: ruby-on-rails ruby-on-rails-2

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

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

2 个答案:

答案 0 :(得分:0)

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

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

您需要将列类型为student_id的列courses添加到integer表中

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

has_many :courses

答案 1 :(得分:0)

如果您实际使用的是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