架构迁移表

时间:2013-09-30 17:33:16

标签: ruby-on-rails ruby-on-rails-4 database-migration

在我的Rails 4应用程序中,我想将我的迁移文件折叠成一个大文件(类似于schema.rb),因为是时候做一些内务管理但是我不确定如何访问数据库中的表格存储迁移数据,这样当我运行迁移时,我不会收到任何错误/冲突。

问题如何访问和删除存储迁移数据的表中的数据?

6 个答案:

答案 0 :(得分:55)

为了好玩,您还可以通过为它们创建模型类来在控制台中操作它们......

class SchemaMigration < ActiveRecord::Base; self.primary_key = :version; end

然后你可以做SchemaMigration.all,SchemaMigration.last.delete等。

真的只是使用SQL的替代品,而且很少需要在这个低级别上乱搞......通常一个坏主意但很酷,看看如何做到这一点:)

答案 1 :(得分:28)

另一种解决方案是通过以下方式访问它:

ActiveRecord::SchemaMigration

大卫给出的答案并没有在我的背景下发挥作用。

答案 2 :(得分:10)

schema_migrations表包含修订号;最后一条记录是最近执行的迁移。您可以手动操作这些记录。

答案 3 :(得分:7)

不确定你为什么要这样做但是你去了:

的ActiveRecord :: Migrator.get_all_versions

答案 4 :(得分:0)

获取最新版本:

ActiveRecord::SchemaMigration.last.version

或所有版本:

ActiveRecord::SchemaMigration.all.map(&:version)

答案 5 :(得分:0)

我不得不进行某种清理:看似微不足道的移民的积累造成了污染,使事情不再有意义。

在开发的最后阶段(不建议在生产中一次使用),您可以清除schema_migrations表,合并迁移(与类一对一)并创建新表(请注意:运行{{1} }具有不同的行为,具体取决于mysql和postgresql)

@ david-lowenfels答案非常适合这种情况。

所有这些自然都假设您没有在键,索引和默认值方面犯错误。这是一项艰巨的任务,但在开发阶段结束时并不是一个不明智的任务。