Я узнал, что add_column
имеет опцию :after
, чтобы установить, где вставлен столбец. Жаль, что я узнал об этом: после добавления группы.Rails 4 migration: как изменить порядок столбцов
Как написать миграцию, чтобы просто переупорядочить столбцы?
Я узнал, что add_column
имеет опцию :after
, чтобы установить, где вставлен столбец. Жаль, что я узнал об этом: после добавления группы.Rails 4 migration: как изменить порядок столбцов
Как написать миграцию, чтобы просто переупорядочить столбцы?
Вы можете позвонить change_column
, но вы должны повторять тип столбца (просто скопировать и вставить его из другой миграции):
def up
change_column :your_table, :some_column, :integer, after: :other_column
end
Или если у вас есть, чтобы изменить порядок несколько столбцов в одной таблице:
def up
change_table :your_table do |t|
t.change :some_column, :integer, after: :other_column
# ...
end
end
change_column
звонки ALTER TABLE
под капотом. С MySQL documentation:
Вы также можете использовать
FIRST
иAFTER
вCHANGE
илиMODIFY
операций изменения порядка столбцов в таблице.
Хороший улов. Я не знал, что это можно сделать через ALTER TABLE. –
@OlivierElMekki Я добавил ссылку на документацию по MySQL – Stefan
@Stefan Могу ли я избежать использования 'def change' вместо' up' и 'down'? – emersonthis
Решение Stefan идеально подходит, если вы имеете дело с несколькими колоннами. Если у вас есть несколько столбцов, которые нужно переустановить И оказались на Mac, я предлагаю вам взглянуть на Sequel Pro, отличный инструмент управления базами данных, который упрощает переупорядочивание столбцов базы данных. Просто перетащите.
PS: Я ни с кем не связан с ними.
В прошлый раз, когда я проверил, Sequel Pro не поддерживает postgres. –
Наверное, лучше всего делать все изменения таблицы в системе, которая их отслеживает ... например, миграции рельсов. –
Вы можете сбросить базу данных, чтобы сохранить данные; переупорядочите Schema.rb, чтобы поместить столбцы timestamps в конец блока create_table; запустите 'rake db: drop db: create db: migrate', а затем повторно импортируйте свои данные. – MrYoshiji
Теперь это недокументированная функция: [Вы должны прочитать основные источники] (https://github.com/rails/rails/blob /7860bf11d862a6eb1bd9ada85bcd97f17a2cb536/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb#L278), чтобы найти его. Только для справки, я проверил код rename_column: он не предлагает эту функцию (извините, что это не помогает). –
Используйте SQL в миграции. http://stackoverflow.com/questions/4095481/easy-way-to-re-order-columns – Zabba