2011-06-17 69 views
0

我有一個鏈接的數據庫,指向一個特定的網站,但該網站上的不同頁面。那麼網站的域名已更改,我需要更新我的數據庫以反映這一變化。我只需要更改域名,其餘鏈接工作正常。我可以使用導軌遷移編輯數據庫中的字段嗎?

我的問題是,我可以使用rails遷移來做到這一點嗎?編輯列中的所有字段並更新它們?這看起來像什麼?

我知道還有其他的方法來處理它,但我想探索一下我在軌道移植中的選擇。

在此先感謝!

回答

1

當然,你有兩個選擇。 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 

個人而言,我更喜歡第一種方法。

+0

我的鏈接在其中有ID的應用程序,我想保持不同的元素。有沒有辦法我只能更新域名,並保持鏈接的其餘部分完好無損? – jfedick

+0

我的代碼 - 特別是MySQL的'REPLACE()'函數 - 完全就是這樣,jfedick。看看文檔:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace –

+0

好的,太棒了!謝謝你的幫助。 – jfedick

相關問題