Каков синтаксис для отбрасывания столбца таблицы базы данных через миграцию Rails?
625
Каков синтаксис для отбрасывания столбца таблицы базы данных через миграцию Rails?
remove_column :table_name, :column_name
Например:
remove_column :users, :hobby
удалит колонку хобби из таблицы пользователей.
up
иdown
методами, а не такchange
, как объяснено в ответе @Powers.remove_column :table_name, :column_name, :type, :options
вchange
методе, так как если вы укажете тип, возможен возврат к миграции. Из документации: и параметры будут игнорироваться , если присутствует. Может быть полезно предоставить их в методе миграции, чтобы его можно было восстановить. В этом случае и будет использоваться add_column.type
options
change
type
options
change
методе, но только если вы укажете тип столбца. Напримерremove_column, :table_name, :column_name, :column_type
. В противном случае вы получите следующую ошибку при попытке запустить миграцию:remove_column is only reversible if given a type
Для старых версий Rails
Для Rails 3 и выше
источник
rails g migration remove_field_name_from_table_name field_name:datatype
также работаетAddXXXtoTTT
RemoveXXXFromTTT
rails g migration RemoveUnusefulFieldsFromUsers hair_color:string favorite_number:integer
remove_column
change
up
down
change
это. Откат работает как надо.change
метод, который можно отменить *, вам нужно будет сообщить тип данных (и все другие модификаторы полей), поэтому, если вы откатите эту миграцию, поле можно будет воссоздать правильно. * Когда я говорю «возвращено», это с точки зрения структуры базы данных, конечно, данные из этого столбца, очевидно, будут потеряны.Rails 4 был обновлен, поэтому метод переноса может использоваться для переноса столбца, и перенос будет успешно откатан. Пожалуйста, прочитайте следующее предупреждение для приложений Rails 3:
Rails 3 Warning
Обратите внимание, что при использовании этой команды:
Сгенерированная миграция будет выглядеть примерно так:
Убедитесь, что не используете метод change при удалении столбцов из таблицы базы данных (пример того, что вам не нужно в файле миграции в приложениях Rails 3):
Метод change в Rails 3 не очень умен, когда дело доходит до remove_column, поэтому вы не сможете откатить эту миграцию.
источник
change
метод,rake db:rollback
команда выдаст ошибку.rake db:rollback
в основном противоположностьrake db:migrate
. Эта ошибка была исправлена в Rails 4 :)В приложении rails4 можно использовать метод change также для удаления столбцов. Третий параметр - это data_type, а в необязательном разделе вы можете указать параметры. Это немного скрыто в разделе «Доступные преобразования» в документации .
источник
Есть два хороших способа сделать это:
remove_column
Вы можете просто использовать remove_column, вот так:
Это хорошо, если вам нужно всего лишь внести одно изменение в вашу схему.
блок change_table
Вы также можете сделать это, используя блок change_table, например:
Я предпочитаю это, поскольку нахожу это более разборчивым, и вы можете сделать несколько изменений одновременно.
Вот полный список поддерживаемых методов change_table:
http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_table
источник
в rails 5 вы можете использовать эту команду в терминале:
например, чтобы удалить столбец access_level (строка) из таблицы пользователей:
и затем запустите:
источник
Создайте миграцию, чтобы удалить столбец, так что если он перенесен (
rake db:migrate
), он должен удалить столбец . И это должно добавить столбец обратно, если эта миграция откатывается (rake db:rollback
).Синтаксис:
remove_column: table_name,: column_name,: type
Пример:
Примечание . Если вы пропустите тип data_type , миграция удалит столбец успешно, но если вы откатите миграцию, она выдаст ошибку.
источник
Ясные и простые инструкции для Rails 5.2
1. Создайте миграцию
Запустите следующую команду в вашем терминале:
rails generate migration remove_fieldname_from_tablename fieldname:fieldtype
Примечание: имя таблицы должно быть во множественном числе в соответствии с соглашением о рельсах.
Пример:
В моем случае я хочу удалить
accepted
столбец (логическое значение) изquotes
таблицы:rails g migration RemoveAcceptedFromQuotes accepted:boolean
См. Документацию re: соглашение о добавлении / удалении полей в таблицу:
2. Проверьте миграцию
3. Запустите миграцию
rake db:migrate
.... А потом ты отправляешься на гонки!
источник
rails db:migrate
Удалить столбцы для приложения RAILS 5
Команда выше генерирует файл миграции внутри
db/migrate
каталога. Фрагмент фрагмента - это один из столбцов удаления из таблицы, сгенерированный генератором Rails,Я также сделал краткое справочное руководство по Rails, которое можно найти здесь .
источник
Вы можете попробовать следующее:
( Официальная документация )
источник
X = имя столбца
Y = имя таблицы
РЕДАКТИРОВАТЬ
Изменено
RemoveXColumnToY
вRemoveXColumnFromY
согласно комментариям - обеспечивает большую ясность для того, что миграция на самом деле делает.источник
Чтобы удалить столбец из таблицы, необходимо выполнить следующую миграцию:
Затем выполните команду:
источник
Дайте ниже команду, которую он добавит в файл миграции самостоятельно
После выполнения вышеуказанной команды вы можете проверить, что файл миграции код remove_column должен быть добавлен туда самостоятельно
Затем перенести БД
источник
remove_column
Вchange
методе поможет вам удалить столбец из таблицы.Перейдите по этой ссылке для полной ссылки: http://guides.rubyonrails.org/active_record_migrations.html
источник
Для удаления столбца из таблицы достаточно выполнить 3 простых шага следующим образом:
rails g migration remove_column_from_table_name
после выполнения этой команды в терминале один файл создается с этим именем и отметкой времени (remove_column from_table_name).
Затем перейдите к этому файлу.
внутри файла вы должны написать
remove_column :table_name, :column_name
Наконец, перейдите в консоль, а затем выполните
rake db:migrate
источник
Вот еще один из рельсов консоли
ActiveRecord::Migration.remove_column(:table_name, :column_name)
источник
Через
remove_column :table_name, :column_name
в файле миграции
Вы можете удалить столбец прямо в консоли rails, набрав:
ActiveRecord::Base.remove_column :table_name, :column_name
источник
Делай как это;
rails g migration RemoveColumnNameFromTables column_name:type
Т.е.
rails g migration RemoveTitleFromPosts title:string
В любом случае, было бы лучше рассмотреть также и время простоя, поскольку ActiveRecord кэширует столбцы базы данных во время выполнения, поэтому, если вы уроните столбец, это может вызвать исключения до перезагрузки вашего приложения.
Ссылка: сильная миграция
источник
Просто, Вы можете удалить столбец
Например,
источник
Сначала попробуйте создать файл миграции с помощью команды:
а затем в корневом каталоге проекта запустите миграцию, выполнив команду:
источник