переименование столбца в направляющих

Это возможный переименовать столбец с помощью команды как:

script/generate migration AddColumnToTable column:type

? Спасибо.

9
задан Victor 16 February 2010 в 22:51
поделиться

3 ответа

Rails действительно имеет команду миграции в адаптере подключения ActiveRecord под названием rename_column . Вы можете создать миграцию, а затем написать код самостоятельно. пример (MySQL):

script/generate migration rename_my_column_by_hand

Затем отредактируйте созданный файл:

class RenameMyColumnByHand < ActiveRecord::Migration
  def self.up
    rename_column :my_table, :old_name, :new_name
  end

  def self.down
    rename_column :my_table, :new_name, :old_name
  end
end

Он выполняет SQL как:

ALTER TABLE my_table CHANGE old_name new_name BIGINT;

Примечание Это только переименовывает столбец, он не переименовывает никакие ссылки, которые у вас есть на него в других таблицах .

17
ответ дан 4 December 2019 в 10:32
поделиться

Отличный вопрос. К сожалению, нет. См. Исходный код Rails 2.3.5:

lib/rails_generator/generators/components/migration/migration_generator.rb

Генератор миграции распознает только ключевые слова add , remove и to / из .

2
ответ дан 4 December 2019 в 10:32
поделиться

Здесь я использую небольшую хитрость. Скажем, я хочу изменить столбец foo на bar.

Создайте миграцию, выполнив следующие действия.

  • Добавить временный столбец temp_foo
  • Обновить все записи, сохранив значение foo в temp_foo
  • Добавить столбец bar
  • Обновить все записи, сохранив значение temp_foo в bar
  • ​​Удалить столбец foo
  • Удалить столбец temp_foo

Это очень хрупко. Если один шаг завершится неудачно, вы можете потерять данные.

1
ответ дан 4 December 2019 в 10:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: