Моя схема не будет обновляться после запуска rake db:migrate

После запуска:

rails g model category

и обновляю мою миграцию, чтобы показать:

class CreateCategories < ActiveRecord::Migration 
  def change create_table :categories do |t| 
    t.string :name t.text :description
    t.timestamps null: false
   end
   end
end

Затем работает:

rails g model albumcategories

и обновляю мою миграцию, чтобы показать:

class CreateAlbumCategories < ActiveRecord::Migration
def change
    create_table :album_categories do |t|
        t.references :album, index: true, foreign_key: true
        t.references :category, index: true, foreign_key: true

        t.timestamps null: false
    end
    end
end

Я запустил rake db:migrate и получил следующий результат:

    20160627163454 CreateCategories: migrating =================================
    -- create_table(:categories)
   -> 0.0768s
== 20160627163454 CreateCategories: migrated (0.0769s) ========================

== 20160627163757 CreateAlbumCategories: migrating ============================
-- create_table(:album_categories)
   -> 0.1252s
== 20160627163757 CreateAlbumCategories: migrated (0.1253s) ===================

Но ни одна из этих новых таблиц не отображается в моей схеме. Я проверил их обоих в консоли, и я могу подключиться к ним. то есть @album.categories.count дает мне вывод "0". Кто-нибудь знает, что здесь происходит? Кажется странным, что моя схема не обновлялась, но таблицы по-прежнему были доступны в консоли. Базы данных беспокоили меня в прошлом, поэтому я не хочу заходить слишком далеко только для того, чтобы узнать, что мне нужно переделать большую часть работы. Любое понимание будет оценено.


person Lenocam    schedule 28.06.2016    source источник
comment
Я видел это раньше и запускал предложенные им команды, db: migrate: redo, db: rollback и т. д., а затем повторно запускал эти миграции. Они все еще не отображаются в моей схеме. Кое-что интересное, что вышло из их повторного повторения, заключается в том, что я наткнулся на точку, когда это не позволило бы мне откатиться дальше === грабли прерваны! StandardError: Произошла ошибка, эта и все последующие миграции отменены: ActiveRecord::IrreversibleMigration '   -  person Lenocam    schedule 28.06.2016
comment
Записаны ли эти миграции в вашей таблице schema_migrations? Можете выложить то, что в таблице?   -  person Jake Wood    schedule 28.06.2016
comment
Прежде чем я опубликую файл, так как он выглядит довольно большим, будет ли таблица schema_migrations находиться в файле db/strucure.sql, просто schema.rb или в каком-то другом месте?   -  person Lenocam    schedule 28.06.2016
comment
@Lenocam В общем, вы хотите избежать обратимых миграций, в основном, чтобы не сталкиваться с такими проблемами. Кроме того, ваша версия схемы могла не синхронизироваться с вашими временными метками имени файла миграции. В прошлом у меня были проблемы с тем, что мой файл схемы не обновлял определенные файлы миграции из-за более ранних меток времени в имени файла.   -  person vich    schedule 28.06.2016
comment
@mmichael В моем длинном списке миграций есть только одна обратимая миграция, и она была создана для меня, когда я обновил гем Refile_postgres. Внизу — «поднять ActiveRecord::IrreversibleMigration». Так я застрял с тем, что у меня есть?   -  person Lenocam    schedule 28.06.2016
comment
@JakeWood У меня все еще есть проблемы с этим, не могли бы вы уточнить, где я могу найти информацию, которую вы хотите, чтобы я предоставил? Я предполагаю, что это не файл schema.rb...   -  person Lenocam    schedule 29.06.2016


Ответы (1)


Попробуйте использовать эту команду: rake db:schema:load

person Shreya    schedule 28.06.2020