2013-05-27 30 views
0

我的項目中有一個「Sqimage」(子問題圖像)模型。但後來我創建了一個「Qimage」模型來取代「Sqimage」,所以我想擺脫舊的「Sqimage」模型和「Sqimage」表。我不想用Rails 3:如何編寫遷移以刪除模型及其表格

rake db:rollback 

,因爲如果別人以後會使用這個項目,他需要運行「耙分貝:rollbakck」手動試。 我想要做的就是創建一個新的遷移,以便以後某個人可以運行「rake db:migrate」來完成一切。 我搜索了Rails指南,發現沒有命令行指令來創建這樣的遷移。那麼是否有人知道如何編寫這樣的遷移來刪除模型和表?該班的名字應該是什麼,我應該使用什麼方法? 以下是創建了「Sqimage」模式遷移:

class CreateSqimages < ActiveRecord::Migration 
    def change 
    create_table :sqimages do |t| 
     t.belongs_to :subquestion 
     t.string :directory 

     t.timestamps 
    end 
    add_index :sqimages, :subquestion_id 
    end 
end 

回答

1

剛纔生成的,它使用drop_table刪除不需要的表的新移民。您可以手動刪除型號.rb文件。

+0

因此,如果其他人運行該應用程序,他是否需要再次手動刪除.rb文件?另外,遷移的類名應該是什麼?對不起,我真的是一個新手... – Lee7355512727

+0

想必您將項目代碼保存在源代碼庫(也許使用git)?如果您刪除一個文件並將其更改提交到回購站,那麼當另一位開發人員提交您的提交時,該文件也將從其項目代碼副本中刪除。你可以調用任何令你感到癢的移植。如果你想無聊,也許「remove_sqimage」。更有創意?也許是「goodbye_sqimage_goodbye」。遷移的類名由文件名派生,您可以閱讀Rails指南獲取詳細信息。 –

+0

非常感謝!這就是我所做的:我創建了一個名爲RemoveSqimages的新遷移,並添加了一個名爲up的方法,其中添加了drop_table:sqimages。然後在命令行中,我運行rails destroy model sqimage,它刪除了模型遷移,.rb文件,紋理以及類似的東西。所以現在生成sqimage模型的遷移已經結束了,但是刪除表的遷移依然存在。我是否需要刪除剛創建的遷移文件以刪除表,以便下次如果有人使用它,它不會刪除根本不存在的表? – Lee7355512727