2012-02-27 49 views
0

使用Rails 3,我在模型改變了名稱的表像這樣:Rails的 - 改變一個表名,現在測試將不會運行

# app/models/product.rb 
class Product < ActiveRecord::Base 
    set_table_name "items" 
end 

但是,當我嘗試建立測試,我收到以下錯誤:

Started 
E 
Finished in 0.027396 seconds. 

    1) Error: 
test_the_truth(CustomerTest): 
ActiveRecord::StatementInvalid: Mysql2::Error: Table 'project2_test.products' doesn't exist: DELETE FROM `products` 


1 tests, 0 assertions, 0 failures, 1 errors 

任何想法如何讓我知道產品?

+0

可能的重複[你如何編寫一個遷移來重命名模型及其在Rails中的表?](http://stackoverflow.com/questions/471416/how-do-you-write-a-migration-to -rename -a-model-and-its-table-in-rails) – Schwern 2012-02-27 02:52:34

回答

0

不要直接改變班級,你應該create a migration。這將允許Rails平滑地更改數據庫,並允許其他任何處理該項目的人以相同的方式更改其數據庫。

編寫一個使用rename_tablechange方法。

class RenameProductsToItems < ActiveRecord::Migration 
    def change 
    rename_table :items, :products :string 
    end 
end 
+0

謝謝 - 它是這樣的原因是我們正在重新構建一個應用程序,它必須同時在同一個數據庫上運行直到我們遷徙過去。 – fatfrog 2012-02-27 02:54:39