Перенос базы данных Ruby on Rails не создает внешние ключи в таблицах MySQL - PullRequest
3 голосов
/ 20 сентября 2009

Я пытаюсь изменить миграцию базы данных в приложении Ruby on Rails. Я использую MySQL в качестве базы данных и хотел бы добавить внешние ключи в создаваемую таблицу. Я использую следующий код, и пока соблюдаются спецификации для создания нулевых значений в соответствующих столбцах, ограничения внешнего ключа не применяются.

class CreateBookCheckOuts < ActiveRecord::Migration
  def self.up
    create_table :book_check_outs do |t|
      t.integer :book_id, :null => false, :options =>
        "CONSTRAINT fk_book_check_out_books REFERENCES books(id)"
      t.integer :person_id, :null => false, :options =>
        "CONSTRAINT fk_book_check_out_people REFERENCES people(id)"
      t.datetime :OutDate, :null => false
      t.datetime :ReturnDate, :null => true

      t.timestamps
    end
  end

  def self.down
    drop_table :book_check_outs
  end
end

1 Ответ

6 голосов
/ 20 сентября 2009

Вы можете использовать камень Foreigner .

Затем измените вашу миграцию на:

class CreateBookCheckOuts < ActiveRecord::Migration
  def self.up
    create_table :book_check_outs do |t|
      t.integer :book_id, :null => false
      t.integer :person_id, :null => false
      t.datetime :OutDate, :null => false
      t.datetime :ReturnDate, :null => true

      t.timestamps
    end
    add_foreign_key(:book_check_outs, :books)
    add_foreign_key(:book_check_outs, :people)
  end

  def self.down
    remove_foreign_key(:book_check_outs, :books)
    remove_foreign_key(:book_check_outs, :people)
    drop_table :book_check_outs
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...