レーキ タスクを使用して、スキーマがわずかに異なるデータベース間でデータを移動しています。
機種名が異なっていても問題ありません。たとえば、「Manufacturer」モデルの別のデータベースから現在のアプリケーションの「Company」モデルに情報をコピーします。
task :copy_from_old_to_new => :environment do
require "active_record"
class Manufacturer < ActiveRecord::Base
end
Manufacturer.establish_connection(
:adapter =>"postgresql",
:host => "...",
:username => "...",
:database => "...")
Manufacturer.find_each do |m|
Company.new do |c|
c.name = m.name
c.location = m.geography
c.save
end
end
Manufacturer.connection.close
end
ただし、モデル名が同一の 2 つのデータベース間でコピーする場合、外部データベースのクラスを定義すると現在のアプリケーションのクラスがオーバーライドされるため、これは機能しません。何か案は?