我正在現有的Rails站點上進行維護工作,並且遇到來自多對多關聯的一些問題。看起來這個網站最初是使用has_and_belongs_to_many
爲幾個關係構建的,這些關係之後在業務邏輯中變得更加複雜,所以我需要使用has_many :through
來支持關係表中的其他字段。但是,最初用於HABTM的連接表沒有主鍵,我必須添加一個以支持使用has_many :through
進行單獨關係建模。Rails建模:將HABTM轉換爲has_many:通過
將主鍵添加到包含大量數據的現有表的最佳方式是什麼?有沒有另一種方法來做我想要的?
順便提一下,系統在Oracle上運行。
謝謝!
賈斯汀
UPDATE 09年11月9日15:58:我不是一個Oracle專家,在不爲空,自動遞增的甲骨文版本的荒野已經迷路,等等。最初我嘗試了Mike和Corey通過添加一個新字段作爲主鍵的建議,但Oracle不會讓我向非空表(ORA-01758)添加非空字段。然後我將數據導出爲SQL,刪除了行,添加了PK並將其設置爲非null,然後嘗試導入數據,但我一直收到「無法將NULL插入到ID ...」的錯誤(ORA-01400)。
最後,我嘗試使用Corey在他的評論中提出的遷移方法,但是當我手動更改數據庫時(「不能向非空表添加非空字段」),rake遇到了Oracle拋出的相同錯誤。我清理了表,運行了遷移(其工作),然後嘗試重新導入數據,但是我上次嘗試導入時出現了相同的錯誤(「無法將NULL插入到ID ...」)。如何保存我的數據並添加我需要的主鍵?我知道提出編寫耙子任務的可能性,但我不確定如何在這方面繼續前進。有任何想法嗎?
另請參閱此最近的問題和答案:http://stackoverflow.com/questions/16159134/how-to-migrate-has-and-belongs-to-many-to-has-many-through/29067732# 29067732 – MZB 2015-03-16 00:02:37