2014-05-06 68 views
2

我最近開始在Rails項目中使用現有的數據庫,但是我意識到所有來自該數據庫的表都被合併了。從模式中刪除表而不從數據庫中刪除它?

我仍然需要這些表中的一部分,而不是這個項目。

恐怕通過遷移刪除它們也會將它們從我的實際數據庫中刪除。我可以從schema.rb手動刪除它們嗎?

+1

通過'schema',你的意思是'db/schema.rb'嗎? –

+0

看這裏(http://stackoverflow.com/questions/9884429/rails-what-does-schema-rb-do)閱讀有關schema.rb的目的,ActiveRecord不使用它加載數據庫表。所以從那裏刪除任何東西都沒有目的。 – Iceman

+1

爲什麼你想從你的模式中刪除它們?我的意思是,在架構中使用它們會導致什麼問題? –

回答

-2

創建一個空遷移文件並編輯它使用DROP TABLE:

drop_table :table_name

+0

謝謝@tTam。我應該在運行'rake db:migrate'之後嗎? – veryrarecandy

+1

這實際上會從數據庫中刪除表。你想要嗎? @jiggabits –

+1

@Kirti不,我不想從我的數據庫中刪除表。從我的模式。 – veryrarecandy

3

db/schema.rb就像是你的完整的數據庫的藍圖。所以,不,它不可能在數據庫中有表格,並且避免在db/schema.rb中顯示它們,因爲它會選擇數據庫的完整模式。即使你在你的數據庫去手動添加新表(即無遷移),它仍然會體現在db/schema.rb

按照Rails的指南,

注意運行分貝:遷移任務還會調用db:schema:dump 任務,該任務會將您的db/schema.rb文件更新爲,與您的數據庫的結構 相匹配。

從Rails的指南另一個參考概括起來

遷移,強大的,因爲他們可能是不適合你的數據庫架構的權威來源 。該角色落在db/schema.rb或Active Record通過檢查數據庫生成的SQL文件中。他們 不是爲了編輯而設計的,他們只是代表數據庫的當前狀態 。

+1

好點+1 :) – Pavan

相關問題