2016-09-20 3 views
1

У меня есть следующая миграция. Есть ли способ запустить эти изменения за одно изменение, чем 3?Изменение нескольких столбцов с одним изменением миграции

+1

Любопытно, почему вас беспокоит запуск трех миграций? Это совершенно нормально для приложения Rails. –

ответ

6

Короткий ответ: нет. Метод change_column настроен для принятия аргументов для имени таблицы, имени столбца и хэша опций. Исходный код для change_column можно найти здесь: https://github.com/rails/rails/blob/0fe76197d2622674e1796a9a000995a7a1f6622b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb

Единственная строка в методе change_column является: execute("ALTER TABLE #{quote_table_name(table_name)} #{change_column_sql(table_name, column_name, type, options)}")

, который выполняет ALTER сценарий на имени таблицы, переданного в качестве первого аргумента. Вы не можете передать массив таблиц/столбцов в качестве аргументов, поэтому вам нужно делать их по одному. Эта парадигма довольно типична для миграции Rails.