【问题标题】:create a new table with one-to-many relationshiop创建具有一对多关系的新表
【发布时间】:2019-02-07 16:18:52
【问题描述】:

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

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

【问题讨论】:

  • 问题:您当前的 Rails 版本是什么?

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


【解决方案1】:

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

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

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

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

has_many :courses

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-17
      • 1970-01-01
      • 1970-01-01
      • 2018-06-12
      相关资源
      最近更新 更多