2015-08-03 74 views
2

我在教程中遇到了以下代碼。Rails:刪除引用關係

的目標是從表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 

刪除參考關鍵詞genre_id但我不明白是什麼意思remove_index :books, column: [:genre_id]

此外,我沒有得到這樣的index: truedown方法。

如果我需要補充的關係,我爲什麼不能只需鍵入

class Addrelationship < ActiveRecord::Migration 
    def change 
      add_reference :books, :genre 
    end 

回答

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表中刪除外鍵。

0

耙分貝:回滾STEP = 1

一種方法可以做到這一點,如果遷移要回滾是最後一個應用。您可以將1替換爲想要返回的多個遷移。

+0

'rake db:rollback'是否默認回滾最後一次遷移? –

+0

是的,使用完整的命令rake db:rollback STEP = 1 –

+0

STEP = 1,STEP = 2等是您想要回滾遷移的步驟。 –