Рельсы: удаление ссылочной связи
Я был смущен следующим кодом в учебнике.
Цель состоит в том, чтобы удалить ссылочный ключ genre_id
из таблицы books
class RemoveGenreFromBooks < ActiveRecord::Migration
def up
remove_index :books, column: [:genre_id]
remove_column :books, :genre_id
end
def down
add_reference :books, :genre, index: true
end
end
Но я не понимаю, что remove_index :books, column: [:genre_id]
означает
Кроме того, я не получил этого index: true
в down
методе.
Если мне нужно добавить отношение, почему я не могу просто ввести
class Addrelationship < ActiveRecord::Migration
def change
add_reference :books, :genre
end
2 ответа:
Поскольку есть способ добавить реферецен, есть также способ удалить -
remove_reference
Синтаксис:
remove_reference(table_name, ref_name, options = {})
Итак, в вашем случае, чтобы удалить ссылку
Genre
:class RemoveGenreFromBooks < ActiveRecord::Migration def change remove_reference :books, :genre, index:true, foreign_key: true end end
Опция
foreign_key: true
также удалит внешний ключ из таблицыbooks
.