我將我的數據庫中的關係從has_many更改爲has_many:through。所以現在我有:通過db:migrate更改結構數據庫後,Rails如何執行數據更新?
class Brand < Ar::Base
has_many :products
end
class Product < AR::Base
belongs_to :brand
end
我打算添加一個連接表。
但是當然我需要用數據更新數據庫。我已經看到,在遷移的範圍內這樣做並不是一個好習慣。在數據更新完成後(即從產品表中刪除原始brand_id列),我知道必須在數據更新完成後再運行另一次遷移,這是執行此操作的最佳位置?
看起來他想運行遷移(添加連接表),然後操作表中的數據,然後再運行另一個遷移。種子是爲了傳播最初的數據而添加的,但這不是他想要達到的目標......他想操縱現有的數據。有些人認爲你不應該用遷移來操縱表中的數據,只能使用表本身。 – johnmcaliley 2010-12-04 20:56:50
我會爭辯說,這樣做的正確位置應該在一次遷移中。運行與首次遷移相關的更改,遷移數據,然後運行其餘的更改。如果這三個步驟相互聯繫,那麼任何一個都不應該獨立發生,它們應該包含在一個遷移中。 – 2010-12-04 21:09:22