2014-04-11 30 views
0

我正在編寫一個腳本,負責將數據從生產數據庫傳輸到新的生產數據庫。在Rails中不同環境之間遷移模型

有一個Rails應用程序連接到每個數據庫。在新的應用程序,我們已經取得了一些遷移該更改架構(刪除列等)

我試着這樣做:

rails console old 

2.0.0p247 :004 > tag = Tag.last.dup 
=> #<Tag id: nil, description: " views", account_id: 46, screenshotBase64: "", user_id: 1, created_at: nil, updated_at: nil> 
2.0.0p247 :005 > ActiveRecord::Base.establish_connection(:development) 
2.0.0p247 :006 > tag.save 
ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'screenshotBase64' in 'field list 

正如我們移除了新的分貝screenshotBase64,這是行不通的。

有沒有辦法做到這一點與Rails?保存前從Rails模型中刪除屬性?

有沒有更好的方式來轉移鏈接通過其兩個數據庫之間的關聯的用戶的所有數據(更改新數據庫中的ID)?

+0

試試我不清楚你想在這裏做什麼。它只是一次性數據副本嗎?如果是這樣,那麼你可以複製數據,然後爲新的數據運行'rake db:migrate':這將運行新的遷移。 這不簡單嗎? –

+0

不是。我們將使這兩個應用程序平行運行一段時間,我們希望能夠將其舊應用程序的依賴關係移動到新應用程序,並隨時堅持新的模式。一種數據遷移? –

+0

當你說「並行」時,你的意思是真實用戶會使用更新的應用程序嗎?或者它只是一個用於測試的臨時應用程序?換句話說,會不會有剛剛在新應用程序中的數據,而不是您想要保留的活動數據? –

回答

1

請有此代碼

tag_attributes = Tag.last.attributes.dup 
%w(id screenshotBase64).map{|method| tag_attributes.delete method} 
ActiveRecord::Base.establish_connection(:development) 
tag = Tag.create(tag_attributes) 
+0

謝謝,我正在看這個儘快 –