Rails:删除引用关系

Cod*_*ang 4 database ruby-on-rails migrate relationship

我对教程中的以下代码感到困惑。

目标是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
Run Code Online (Sandbox Code Playgroud)

但我不明白什么remove_index :books, column: [:genre_id]意思

此外,我没有index: truedown方法中得到这一点。

如果我需要添加关系,为什么我不能直接输入

class Addrelationship < ActiveRecord::Migration
    def change
            add_reference :books, :genre
    end
Run Code Online (Sandbox Code Playgroud)

Ash*_*ana 6

由于有一种添加引用的方法,因此也有一种可以删除的方法 -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
Run Code Online (Sandbox Code Playgroud)

该选项foreign_key: true还将从books表中删除外键。