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