создать новую таблицу с отношением один ко многим - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть старый проект rails, использующий Rails 2.Уже есть модель класса Student.В базе данных есть таблица students.Теперь мне нужно реализовать, что каждый студент может иметь несколько курсов.Это означает, что мне нужно иметь новую таблицу в базе данных, которая будет courses таблицей, и иметь отношение «один ко многим» от студента к курсу.

Как создать файл миграции, чтобы сделать это?

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Это не должно быть слишком сложно, если вы на самом деле используете 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 и добавьтесвязь с файлом:

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

0 голосов
/ 07 февраля 2019

В Rails 2 не было возможности создавать ассоциации с помощью генератора миграции, поэтому вы должны придерживаться более ручного подхода.

Вы можете создать миграцию таким образом: https://www.tutorialspoint.com/ruby-on-rails-2.1/rails-migrations.htm

Вам нужно добавить столбец student_id в таблицу courses с типом столбца integer

Затем добавьте в свою модель Student следующее:

has_many :courses

...