Ruby on rails rails迁移文件中的输入错误

Ruby on rails rails迁移文件中的输入错误,ruby-on-rails,rails-migrations,Ruby On Rails,Rails Migrations,各位 我创建了一个rails迁移文件,更新模型中属性的值。我在几个生产部署上运行了此迁移,然后意识到由于输入错误,该表从未更新过。修复此问题的最佳做法是,我应该使用修复程序更新当前迁移文件并提交它,然后重新运行迁移,还是创建一个新的迁移文件并删除此迁移。如果运行了迁移并成功,然后更新当前迁移文件并尝试重新运行迁移,Rails不会更新您的架构,因为迁移版本将与当前db版本相同 如果执行rake db:migrate:status操作,您应该能够看到迁移列表以及已应用或未应用的迁移列表 基于此,如果

各位


我创建了一个rails迁移文件,更新模型中属性的值。我在几个生产部署上运行了此迁移,然后意识到由于输入错误,该表从未更新过。修复此问题的最佳做法是,我应该使用修复程序更新当前迁移文件并提交它,然后重新运行迁移,还是创建一个新的迁移文件并删除此迁移。

如果运行了迁移并成功,然后更新当前迁移文件并尝试重新运行迁移,Rails不会更新您的架构,因为迁移版本将与当前db版本相同

如果执行
rake db:migrate:status
操作,您应该能够看到迁移列表以及已应用或未应用的迁移列表

基于此,如果您的迁移显示
status:down
,则表示尚未将其应用于数据库

如果它已经应用于数据库,那么您可以有许多选项

  • rake db:rollback
    更新文件,然后重新运行迁移
  • 创建一个新文件来修复打字错误。请注意,即使删除带有错误数据的迁移,也无法修复数据库,这取决于您对表所做的操作以及在新迁移中如何修复它

  • 如果迁移从未运行过,那么您可以继续直接编辑它。我如何判断迁移是否运行过,rails是如何决定的,例如,在本例中,它确实尝试运行迁移,但没有执行任何操作,因为存在输入错误。您能提供迁移片段吗?根据输入错误的不同,它是否引发了异常,还是使用错误的名称创建了属性?如果它没有执行任何操作,您可以放心地假设它没有运行。所以只需编辑它并重新运行。