假設您有「lineitems」,並且您曾經從line_item定義「make」。在Rails遷移中遷移數據
最終你意識到make應該可以在自己的模型上,所以你創建了一個Make模型。
然後,您想要從line_items表中移除make列,但是要爲每個line_item移除您想要find_or_create_by(line_item.make)的make。
我如何有效地在軌道遷移中做到這一點?我敢肯定,我可以爲每個line_item運行一些簡單的find_or_create_by,但我擔心後備支持,所以我只是在這裏發佈此任何提示/建議/正確的方向。
謝謝!
事務性遷移僅在數據庫供應商支持時纔可用。 MySQL例如不提供事務性DDL,因此raise語句會導致遷移失敗並使數據庫處於不一致狀態。 – Cluster 2013-03-06 10:39:35
如果你添加了什麼集羣說,也許分成兩個遷移,添加一個新的列,並做你需要做的任何事情。第二,當塵土已經沉澱,然後刪除任何不再需要的列。這不是完美的,但會給你一個回頭路。 – Ghoti 2013-07-31 09:23:23