Рельсы: удаление ссылочной связи
Я был смущен следующим кодом в учебнике.
Цель состоит в том, чтобы удалить ссылочный ключ 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.