Нам действительно нужно удалять внешние ключи перед удалением таблиц?

#mysql #ruby-on-rails #ruby

#mysql #ruby-on-rails #ruby

Вопрос:

Миграция

 def self.up
    create_table :test_drafts do |t|
      t.string :title, :limit => 255, :null => false
      t.text :description
      t.integer :user_id, :null => false
      t.integer :test_id, :null => false
      t.timestamps
    end

    add_foreign_key(:test_drafts,:user_id,:users,:cascade)
    add_foreign_key(:test_drafts,:test_id,:tests,:cascade)
  end

  def self.down
    drop_foreign_key(:test_drafts,:user_id)
    drop_foreign_key(:test_drafts,:test_id)
    drop_table(:test_drafts)
  end
  

Нам действительно нужно удалять внешние ключи перед удалением таблиц?
Могу ли я удалять таблицы напрямую, не удаляя внешние ключи?

Ответ №1:

Ответ №2:

Да, это хорошая практика для написания миграции. Есть несколько баз данных, которые не позволяют удалять таблицу, если в ней определен какой-либо внешний ключ.

и поскольку rails дает вам возможность работать с различными базами данных, в идеале рекомендуется рассмотреть такие лучшие практики.

Ответ №3:

Это зависимость. Во-первых, вы должны удалить независимые таблицы, даже если они содержат внешние ключи.