2014-02-12 52 views
5

我正在試圖添加一個標記模型到我的rails博客。但是我意外地生成了一個「Tags.rb」模型,而不是「Tag.rb」,在閱讀完指南之後,我意識到在模型中製作「tag」複數是個錯誤。我回滾使用刪除模型和遷移文件軌道4

rake db:rollback 

然後

rails destroy model Tags.rb 

遷移,這是我回來

invoke active_record 
    remove /home/migration/templates/create_table_migration.rb 
    remove app/models/tags.rb.rb 
    invoke test_unit 
    remove  test/models/tags.rb_test.rb 
    remove  test/fixtures/tags.rbs.yml 

當我回來,雖然其仍然存在的模型文件夾。 請幫助:)

回答

2

只要給

rails destroy model Tag 
+0

是的,剛剛跑了。同樣的結果。我回到文件中,tags.rb仍在模型中。 – nadia

+0

我嘗試用「rails g model - force Tag」覆蓋它,但它一直告訴我:「沒有提供所需參數值的名稱」 – nadia

1

嘗試使用多標籤沒有額外的.rb,像

rails destroy model Tags 

希望這有助於

1

您可以手動刪除文件,或者只是手動刪除「s」。

0

您可以在模型文件夾中刪除遷移文件夾和模型中的遷移文件,然後再次創建一個您想要的新文件。

,你必須運行命令

rails g model tag 

然後遷移數據庫

rake db:migrate 
1

試試這個

bundle exec rake db:rollback 

,然後刪除您的模型作爲

rails destroy model <model_name> 

現已全部刪除。

+0

完美,正是我所期待的,它的作用就像一個魅力!謝謝安東尼 –

0

首先,在使用rails generate model生成Rails模型時,請勿將.rb添加到型號名稱的末尾。 Rails自動執行此操作,所以如果您自己添加.rb,則最終會生成一個名爲Tag.rb.rb的模型,該模型無效。

您正在使用「Tags.rb」運行刪除生成器。您是否生成最初使用rails generate model Tags.rb的模型?如果你這樣做,那麼運行rails destroy model Tags.rb將有望刪除所有文件,但由於模型名稱無效,它可能無法按預期工作(您的用例超出了生成器的預期用例)。如果您最初使用rails generate model Tags生成模型,則應該運行rails destroy model Tags

如果您最初調用rails generate model Tags.rb,並運行remove命令不工作(同樣,在理解鑑於Tags.rb是一個無效的名字 - 本來不錯,如果發電機原本禁止從生成Tags.rb.rb文件,但你不能擁有一切):

  1. 如果你能負擔得起摧毀你的數據庫,並重新運行所有的遷移,最簡單的辦法將是手動刪除添加的文件,破壞數據庫,並重新運行所有遷移。然後您可以使用rails generate model Tag添加正確的模型。
  2. 如果您不能銷燬數據庫,那麼您需要手動在遷移文件夾中找到問題遷移,在該遷移中運行down命令,然後手動刪除該遷移文件以及所有其他文件。