我有一个使用Rails 2的旧Rails项目。已经有模型类Student
。在数据库中,有一个表students
。现在,我需要实现每个学生可以拥有多个课程。这意味着我需要在数据库中有一个courses
表的新表,并且要在学生与课程之间建立一对多的关系。
如何创建迁移文件来做到这一点?
答案 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