架构迁移表

tom*_*456 36 ruby-on-rails database-migration ruby-on-rails-4

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

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

Dav*_*els 61

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

class SchemaMigration < ActiveRecord::Base; self.primary_key = :version; end
Run Code Online (Sandbox Code Playgroud)

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

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


Pet*_*per 34

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

ActiveRecord::SchemaMigration
Run Code Online (Sandbox Code Playgroud)

大卫给出的答案在我的背景下不起作用.

  • 这比定义一个新模型要干净得多,它确实应该是最佳答案。 (2认同)

ste*_*ser 13

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

  • 谢谢 - 我的问题是如何访问此表 - 我是否使用控制台?我想删除所有记录,然后创建一个新的迁移 - 这个声音好吗? (2认同)

Agu*_*tin 8

不知道你为什么要这样做但是你去了:

的ActiveRecord :: Migrator.get_all_versions


loc*_*dev 6

获取最新版本:

ActiveRecord::SchemaMigration.last.version
Run Code Online (Sandbox Code Playgroud)

或所有版本:

ActiveRecord::SchemaMigration.all.map(&:version)
Run Code Online (Sandbox Code Playgroud)