Обязательно прочитайте этот раздел руководства .
Убедитесь в блоке приложения в config/application.rb
:
config.active_record.schema_format = :sql
Тогда вы можете использовать этот рейкзадача вывести схему, хотя она должна быть выгружена / обновлена всякий раз, когда вы выполняете миграцию / etc.из-за этого параметра выше:
rake db:structure:dump
Ваша структура должна быть в db/structure.sql
.Он должен выглядеть как файл схемы дампа из вашей БД, т.е. не включая данные, за исключением данных миграции, которые будут помещены в конце (по крайней мере, для postgres).
При использовании config.active_record.schema_format = :sql
your db/schema.rb
- это , а не обновляется по умолчанию всякий раз, когда вы выполняете миграцию, поскольку db/schema.rb
не означает, что это дамп SQL полной схемы.Тем не менее, некоторые инструменты, такие как IntelliJ Rubymine и IDea с плагином Ruby, такие как этот файл, должны быть там, поэтому в ваш Rakefile добавьте их (как упоминалось здесь ):
Rake::Task["db:migrate"].enhance do
if ActiveRecord::Base.schema_format == :sql
Rake::Task["db:schema:dump"].invoke
end
end
Rake::Task["db:rollback"].enhance do
if ActiveRecord::Base.schema_format == :sql
Rake::Task["db:schema:dump"].invoke
end
end
Когда тестБД воссоздан Rails, он будет использовать db/structure.sql
в качестве базы при использовании config.active_record.schema_format = :sql
.Если вы выполняете откат или вносите изменения в базу данных извне и сокращаете ее с помощью приведенной выше команды или выполняете миграцию и т. Д., Она также обновит db/structure.sql
(и db/schema.rb
с помощью указанных выше задач, хотя db/schema.rb
не полностью охватываетинформация из дампа схемы).