2015-09-24 35 views
2

我有modelA,其中has_many modelBs和modelB belongs_to modelA。我試圖將modelB的名稱更改爲modelC,但沒有真正知道我在做什麼。之前,我可以打電話@modelA.modelBs蠻好的,並獲得對象的列表,但現在我不能撥打@modelA.modelCs。我得到一個NoMethodError。這是我所作的嘗試,使開關的事情:has_many方法在重命名模型和表後不起作用

我改名爲表一中的sqlite3遷移:

def change 
    rename :modelBs, :modelCs 
end 

然後我改變MODELA使其has_many :modelCs和我改名和編輯modelB.rb(現modelC.rb ),並更改了課程名稱,使其成爲class ModelC < ActiveRecord::Base。它仍然是belongs_to :modelA

Rails無法找到一個bar方法來調用ModelA的一個實例。當我做@modelA.modelCs時,我得到一個NoMethodError。我運行遷移,我重新啓動服務器。我錯過了什麼?我做了一件壞事嗎?

回答

0

如果你做$rake db:reset會發生什麼? db:reset應該用所有種子數據重建數據庫(沒有遷移);也許檢查一下,看看依賴關係在這一點上是什麼樣的,然後你可以運行你的$rake db:migrate來運行遷移,看看你在那裏留下了什麼。你能否包含關於你的後端的更多信息?它是Sqlite3嗎? PostgreSQL的?

  • 分貝:遷移尚未運行運行(單)遷移。
  • DB:重置確實分貝:滴,DB:設置
+0

很確定耙db:重置做到了。謝謝! – eeeeeean

3

沒有遷移成功運行並沒有你的表實際上獲得改名?我一直用rename_table此:

def change 
    rename_table :modelBs, :modelCs 
end 

類裏面,你也可以知道哪些表模型應關聯的軌道,只是爲了測試它是否在看右表

class modelC < ActiveRecord::Base 
    table_name "modelCs" 
end 

希望有幫助

相關問題