我对教程中的代码感到困惑。
目标是从表格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
答案 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替换为您想要返回的许多迁移。