Rails:删除引用关系

时间:2015-08-03 12:17:08

标签: ruby-on-rails database relationship migrate

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

目标是从表格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 个答案:

答案 0 :(得分:1)

由于有一种方法可以添加referecen,还有一个要删除的方法 - 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表中删除外键。

答案 1 :(得分:0)

rake db:rollback STEP = 1

如果您想要回滚的迁移是最后一次应用,那么这是一种方法。您可以将1替换为您想要返回的许多迁移。