Миграция для создания таблицы, которая уже присутствует в базе данных - PullRequest
0 голосов
/ 15 марта 2019

Я создал таблицу PSQL через консоль PSQL.Я создал модель в рельсах для соответствующей таблицы.Теперь, если я хочу написать миграцию для создания таблицы, чтобы кому-то, использующему мой код, не нужно было создавать таблицу через консоль psq, а также он не должен удалять таблицу для меня при запуске миграции.Как это решить.

Ответы [ 3 ]

2 голосов
/ 15 марта 2019

В вашем миграционном файле:

create_table :foo do
  .....
end unless table_exists? :foo

ActiveRecord::ConnectionAdapters::SchemaStatements#table_exists?.

2 голосов
/ 15 марта 2019

Если вы читаете этот ответ и находитесь на Rails 6, в #create_table в Rails 6 beta1 был добавлен новый флаг для решения этой конкретной проблемы.

Пример:

create_table :posts, if_not_exists: true do |t|
  t.string :title
end
0 голосов
/ 15 марта 2019

Rails рекомендует разработчикам изменять свою базу данных только через файлы миграции.Потому что, когда вы делаете ручные изменения, schema.rb не обновляется.Это сделает схему других разработчиков несовместимой с вашей.

Если вы создали таблицу в своей локальной базе данных вручную, вы можете удалить ее вручную и создать новый файл миграции.Затем, если вы запустите файл миграции, он создаст таблицу и обновит schema.rb соответственно.

Если вы все еще хотите написать миграцию только для других разработчиков, вы можете создать миграцию с помощью таблицы создания изатем прокомментируйте это во время выполнения миграции.schema.rb теперь будет обновляться новой таблицей, поскольку Rails автоматически пытается синхронизировать вашу базу данных с файлом schema.rb каждый раз, когда вы запускаете команду DB.Теперь раскомментируйте изменение миграции и отправьте изменения другим разработчикам, чтобы получить таблицу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...