我的一个朋友在旧版应用程序上进行了相当古老的迁移,其中包含以下代码段:
class MakeChangesToProductionDbToMatchWhatItShouldBe < ActiveRecord::Migration
def self.up
# For some reason ActiveRecord::Base.connection.tables.sort().each blows up
['adjustments',
'accounts',
...## more rows of classes here ###...
'product_types'].each do |table|
t = table.singularize.camelize.constantize.new
if t.attributes.include?('created_at')
change_column( table.to_sym, :created_at, :datetime, :null => false ) rescue puts "#{table} doesnt have created_at"
end
if t.attributes.include?('updated_at')
change_column( table.to_sym, :updated_at, :datetime, :null => false ) rescue puts "#{table} doesnt have updated_at"
end
end
这个旧迁移现在与我编写的新迁移冲突,该迁移是为了删除这个长列表中提到的两个表,这现在导致任何部署在 rake db:migrate 时出错。
为解决此迁移并让 db:migrate 再次工作而编写的正确迁移或关闭操作是什么?