2011-06-17 4 views
0

私は特定のサイトを指しているがそのサイトの異なるページを指すリンクのデータベースを持っています。サイトのドメインが変更されたため、その変更を反映するためにデータベースを更新する必要があります。私はドメイン名を変更する必要があります、リンクの残りの部分は正常に動作します。レール・マイグレーションを使用してデータベースのフィールドを編集することはできますか?

私の質問は、これを行うにはレールの移動を使用できますか?列のすべてのフィールドを編集して更新するには?これはどのように見えますか?

私はそれに近づける他の方法があることを知っていますが、私はレールの移行で持っていたオプションを探求したいと思います。

ありがとうございます!

答えて

1

もちろん、2つのオプションがあります。 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

関連する問題