Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:删除引用关系_Ruby On Rails_Database_Relationship_Migrate - Fatal编程技术网

Ruby on rails Rails:删除引用关系

Ruby on rails Rails:删除引用关系,ruby-on-rails,database,relationship,migrate,Ruby On Rails,Database,Relationship,Migrate,我对教程中的以下代码感到困惑 目标是从表book 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: t

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

目标是从表
book

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

rake db:回滚步骤=1


如果要回滚的迁移是最后一次应用的迁移,则可以使用。您可以用1代替您想要返回的任何数量的迁移。

因为有一种方法可以添加引用,所以也有一种方法可以删除-
remove\u reference

语法是:
remove\u引用(table\u name,ref\u name,options={})

因此,在您的情况下,要删除
类型的引用

class RemoveGenreFromBooks < ActiveRecord::Migration
  def change
    remove_reference :books, :genre, index:true, foreign_key: true
  end
end
class RemoveGenreFromBooks

选项
foreign\u key:true
也将从
books
表中删除外键。

默认情况下,rake db:rollback是否回滚最后一次迁移?步骤=1、步骤=2等是要回滚迁移的步骤。实际上,我很困惑为什么我需要键入
up
down
方法而不是键入
change
method来回滚
add\u reference
migration我已经更改了问题标题,我想知道的是
列:[:类型id]
索引:在
up
down
方法中为true
class RemoveGenreFromBooks < ActiveRecord::Migration
  def change
    remove_reference :books, :genre, index:true, foreign_key: true
  end
end