2013-12-17 5 views
1

Мой первый раз с Падрино и DataMapper. Если я правильно понял,Сохранение моделей и миграций в синхронизации

  • padrino g model Foo сделает models/foo.rb, а также db/migrate/001_create_foos.rb.

  • Чтобы создать индекс, мне нужно указать его в модели, а не в процессе миграции.

  • padrino rake dm:auto:{upgrade|migrate} будет генерировать базу данных с моделей, не обращая внимания на db/migrate папку.

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

ответ

1

Согласно документации Padrino, я думаю, вы правы. В Orm section указано, что пространство имен auto не будет использовать генерируемые миграции.

В принципе, вместо того чтобы писать миграции можно непосредственно редактировать schema.rb и выполнять неразрушающий миграцию с Padrino граблей ар: авто: обновить

Я думаю, вы можете отслеживать базу данных с миграции удаления автоматического имен, как:

rake dm:migrate    # Migrates the database to the latest version 
rake dm:migrate:down[version] # Migrates down using migrations 
rake dm:migrate:up[version] # Migrates up using migrations 

и генерировать миграции, как описано в Migration Generator section

+0

Проблема в том, что я не мог найти способ сделать индексы, используя миграцию DM. Итак (если я чего-то не хватает), мне нужно автоматизировать. – Amadan

+0

Я также не мог найти документацию для этого. Думаю, в этом случае вам нужно попытаться добавить оператор индекса после создания миграции. Подобно изменению 'column: name, String,: index => true' в блоке create_table. Исходный код для этого может помочь (https://github.com/datamapper/dm-migrations/blob/master/examples/sample_migration.rb) –

+0

Я попробовал 'column: name, String,: index => true' в миграция; он не создавал индекс в SQL. (И это не в примере миграции.) – Amadan