Изменить тип столбца в нескольких таблицах - PullRequest
1 голос
/ 24 января 2020

У меня есть один и тот же атрибут в нескольких моих таблицах в моей базе данных, этот атрибут называется 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

Ответы [ 2 ]

2 голосов
/ 24 января 2020

Вы можете использовать метод миграции change_column, чтобы быть более кратким. Ваша миграция будет выглядеть примерно так, как показано ниже. Я бы порекомендовал прочитать также Документы по миграции Active Record .

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
0 голосов
/ 24 января 2020
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...