0
我有一個鏈接的數據庫,指向一個特定的網站,但該網站上的不同頁面。那麼網站的域名已更改,我需要更新我的數據庫以反映這一變化。我只需要更改域名,其餘鏈接工作正常。我可以使用導軌遷移編輯數據庫中的字段嗎?
我的問題是,我可以使用rails遷移來做到這一點嗎?編輯列中的所有字段並更新它們?這看起來像什麼?
我知道還有其他的方法來處理它,但我想探索一下我在軌道移植中的選擇。
在此先感謝!
我有一個鏈接的數據庫,指向一個特定的網站,但該網站上的不同頁面。那麼網站的域名已更改,我需要更新我的數據庫以反映這一變化。我只需要更改域名,其餘鏈接工作正常。我可以使用導軌遷移編輯數據庫中的字段嗎?
我的問題是,我可以使用rails遷移來做到這一點嗎?編輯列中的所有字段並更新它們?這看起來像什麼?
我知道還有其他的方法來處理它,但我想探索一下我在軌道移植中的選擇。
在此先感謝!
當然,你有兩個選擇。 1)你可以寫在遷移ActiveRecord的代碼就像你在一個模型中,例如:
class ChangeDomainName < ActiveRecord::Migration
def self.up
YourModel.update_all "url = REPLACE(url, 'www.old-domain-name.com', 'www.new-domain-name.com')"
end
def self.down
# ...
end
end
一件事在這種情況下要記住的是,如果你例如更換列名或類型在update_all
之前的同一遷移中,在更改表之後以及在對其調用ActiveRecord方法之前,您需要執行YourModel.reset_column_information
。
2)您可以使用原始SQL與 「執行」 的方法:
def self.up
execute "UPDATE your_models SET url = REPLACE(url, 'www.old-domain-name.com', 'www.new-domain-name.com)"
end
個人而言,我更喜歡第一種方法。
我的鏈接在其中有ID的應用程序,我想保持不同的元素。有沒有辦法我只能更新域名,並保持鏈接的其餘部分完好無損? – jfedick
我的代碼 - 特別是MySQL的'REPLACE()'函數 - 完全就是這樣,jfedick。看看文檔:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace –
好的,太棒了!謝謝你的幫助。 – jfedick