2016-08-15 4 views
0

Недавно я просмотрел файл schema.rb и был встревожен, обнаружив, что некоторые столбцы, которые существуют в моей базе данных, не отображаются, а некоторые таблицы полностью отсутствуют. Пропущенные столбцы были добавлены в базу данных через миграции «def change add_column», хотя некоторые столбцы, которые были добавлены таким образом, выглядят так, как ожидалось в schema.rb.Почему мой файл schema.rb не обновлен?

При ближайшем рассмотрении я понял, что schema.rb не обновляется с момента создания таблицы Users.

20151019205241_create_users.rb:

class CreateUsers < ActiveRecord::Migration 
    def change 
    create_table :users do |t| 
     t.string :name 
     t.string :email 
     t.timestamps null: false 
    end 
    end 
end 

Это не вызвало вопрос для меня на практике, но я думал, что schema.rb должен был быть автоматически обновляется, и что было бы важно, чтобы он обновил чтобы воссоздать базу данных. Может ли кто-нибудь помочь мне понять, почему он не будет обновляться?

Одна из возможностей заключается в том, что она перестала быть обновленной, когда я переключил свою базу данных с sqlite3 на postgresql. Я точно не помню, но думаю, что время имеет смысл.

+0

Не знаете, как переключение базы данных мешает «schema.rb». Правильно ли обновляется файл, когда вы выполняете 'rake db: migrate' сейчас? (Вам не нужно добавлять новые миграции для выполнения этой задачи Rake.) – Raffael

+0

Это не так. В следующий раз я обновляю базу данных каким-то образом, я проверю это. На данный момент работает решение @ smefju. Спасибо за ваш ответ! Вы правы, похоже, что это не связано с переключением баз данных. –

ответ

2

Вы можете использовать rake db:schema:dump для воссоздания файла из текущей структуры базы данных.

Файл схемы не зависит от драйвера, поэтому переход от sqlite3 к PostgreSQL не должен иметь значения. Убедитесь, что version для определения в файле не больше текущей текущей даты. Вы также можете добавить весь файл к фрагменту вопроса.

+0

Спасибо, это исправлено! –

Смежные вопросы