首页 > 解决方案 > 从 rails 4.2 升级到 rails6.0 时是否需要将迁移文件版本更改为 [6.0]

问题描述

我将我的 rails 4.2 项目升级到 rails5.2,然后现在升级到 rails6.0。我的旧迁移文件之一是:

class CreateLocations < ActiveRecord::Migration
  def change
    create_table :locations do |t|
      t.string :name, :limit=>100, :null=>false      
      t.string :address1, :limit=>60, :null=>false
      t.string :address2, :limit=>60, :null=>false
      t.string :city, :limit=>30, :null=>false
      t.string :state, :limit=>30, :null=>false
      t.string :zip, :limit=>15, :null=>false     
      t.boolean :status
      t.references :user      
      t.timestamps
    end
  end
end

现在,我将第一行更新为:

class CreateLocations < ActiveRecord::Migration[4.2]

是否正确,或者我需要为现有的旧迁移文件提供新版本 [6.0]。请帮忙

标签: ruby-on-railsruby-on-rails-6

解决方案


对于您应该拥有的旧迁移ActiveRecord::Migration[4.2],这是为了迁移兼容性,以便迁移对较新的 rails 具有相同的效果(rails 5 更改了迁移 api,例如默认选项不同)。

一般来说 - 迁移现在具有它们最初创建的 rails 版本,并且在升级后运行类似(或失败,但至少不会默默地产生意外结果)


推荐阅读