Ruby on rails 修改多个表中列的类型

Ruby on rails 修改多个表中列的类型,ruby-on-rails,Ruby On Rails,我在数据库中的几个表中都有相同的属性,这个属性称为address,类型为string,如何将其更改为text,但我想在多个表中执行此操作 有没有办法在同一次迁移中进行所有这些更改 class ChangeTypeAddressPlaces < ActiveRecord::Migration[5.0] def up change_table :precints do |t| t.change :address, :text end change_ta

我在数据库中的几个表中都有相同的属性,这个属性称为
address
,类型为
string
,如何将其更改为
text
,但我想在多个表中执行此操作

有没有办法在同一次迁移中进行所有这些更改

class ChangeTypeAddressPlaces < ActiveRecord::Migration[5.0]
  def up
    change_table :precints do |t|
      t.change :address, :text
    end

    change_table :precint_events do |t|
      t.change :address, :text
    end

    change_table :precint_translations do |t|
      t.change :address, :text
    end

    change_table :locations do |t|
      t.change :address, :text
    end

    change_table :location_events do |t|
      t.change :address, :text
    end

    change_table :location_translations do |t|
      t.change :address, :text
    end
  end

  def down
    change_table :precints do |t|
      t.change :address, :string
    end

    change_table :precint_events do |t|
      t.change :address, :string
    end

    change_table :precint_translations do |t|
      t.change :address, :string
    end

    change_table :locations do |t|
      t.change :address, :string
    end

    change_table :location_events do |t|
      t.change :address, :string
    end

    change_table :location_translations do |t|
      t.change :address, :string
    end
  end
end
class ChangeTypeAddressPlaces
您可以使用
change\u列
迁移方法更简洁。您的迁移类似于下面的示例。我建议大家也通读一下这本书

class ChangeTypeAddressPlaces
def up
  change_column :precints, :address, :text
  change_column :precint_events, :address, :text
  change_column :precint_translations, :address, :text
  change_column :locations, :address, :text
  change_column :location_events, :address, :text
  change_column :location_translations, :address, :text
end

def down
  change_column :precints, :address, :string
  change_column :precint_events, :address, :string
  change_column :precint_translations, :address, :string
  change_column :locations, :address, :string
  change_column :location_events, :address, :string
  change_column :location_translations, :address, :string
end
class ChangeTypeAddressPlaces < ActiveRecord::Migration[5.0]
  TABLES = [:precints, :precint_events, :precint_translations,                   
            :locations, :location_events, :location_translations]
  def up
    TABLES.each { |table| change_column table, :address, :text }
  end

  def down
    TABLES.each { |table| change_column table, :address, :string }
  end
end