Ruby on rails Rails:在迁移后运行初始值设定项

Ruby on rails Rails:在迁移后运行初始值设定项,ruby-on-rails,rails-migrations,Ruby On Rails,Rails Migrations,我有一些代码,我从一个初始化运行,它工作得很好。(它将默认设置从yaml文件保存到gem的数据库。) 但是当我在Travis CI上运行这个时,因为它是从头开始迁移的,初始化器失败了,因为表还不存在 有没有一种方法可以在迁移之后但在应用程序启动之前运行代码?因此,虽然我不喜欢这样做,但有一种简单的方法可以防止初始值设定项在db:migrate期间运行,但在应用程序启动或测试运行时运行是将其包装在一个子句中,以测试表是否存在。因此,如果您使用现有的初始值设定项代码并将其封装在 if ActiveR

我有一些代码,我从一个初始化运行,它工作得很好。(它将默认设置从yaml文件保存到gem的数据库。)

但是当我在Travis CI上运行这个时,因为它是从头开始迁移的,初始化器失败了,因为表还不存在


有没有一种方法可以在迁移之后但在应用程序启动之前运行代码?

因此,虽然我不喜欢这样做,但有一种简单的方法可以防止初始值设定项在db:migrate期间运行,但在应用程序启动或测试运行时运行是将其包装在一个子句中,以测试表是否存在。因此,如果您使用现有的初始值设定项代码并将其封装在

if ActiveRecord::Base.connection.table_exists? 'table_name'
   ....
end

如果“table_name”是缺少的表的名称,那么rake db:migrate和spec run都应该能够成功完成。

如果迁移只更改表的一列,那么您也可以使用它来验证对特定列所做的更改