もちろん、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
このシナリオで覚えておくべきことの 1 つは、テーブルを変更した後、そのテーブルで ActiveRecord メソッドを呼び出す前に、同じ移行で列名や型などを変更update_all
する必要があることです。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
個人的には最初の方法が好きです。