私はRails Appから同じ構成とテーブルの別のデータベースに1人のユーザーのデータをダンプ/転送する必要があるというシナリオを持っています。例えば、アプリケーションはA社が支払う停止した場合に私の要件は、あるRails - 別のIDを持つ別のDBにデータを移行する
class Company < ActiveRecord::Base
has_many :depots
has_many :users
end
class Depot < ActiveRecord::Base
belongs_to :company
has_many :products
end
class User < ActiveRecord::Base
belongs_to :company
end
class Product < ActiveRecord::Base
belongs_to :depot
end
として構築されて、私はきれいで、彼らが戻ってきたら、私の実際のDBを維持するために、別のDB(例えばdatabse2)に自分のデータをダンプすると、支払いを開始し、私はこのデータを元に戻したい。
第2の要件は、database2にすでにいくつかのデータがあることです。だから私はすべてのレコードを保持する必要があり、私はassociationAをそのまま維持しているdatabase2に保存している間にcompanyAのIDを変更したい(同じIDの会社があるので)。これは愚かなことかもしれませんが、それが私の必要条件です。 私はPostgresを私のアプリケーションDBとして使用しています。 何かが助けますか?
IDが変更されず、シーケンスジェネレータを変更しない限り、あなたはうまくいくはずです。 IDを再発行しないでください。それはただの無謀です。簡単な間違いのために、ある企業が別の企業のデータを「継承」するリスクを冒します。 – tadman
私はレコードを複製し、それをActiveRecordとAmoebaのような宝石を使って新しいDBに保存しようとしていましたが、nil parent-id制約のモデルで多くのバリデーションがあるので、 –
あなたが最初に質問する必要があるのは、ストレージのオーバーヘッドが窮屈である場合、最初にこれを行う必要があるかどうかということです。もう1つのことは、すべてをシリアライズしてファイルとしてダンプし、後でデータベースに逆シリアル化してデータベースに戻すことができるかどうかを調べることです。これを例としてgzipを使ってJSONにすることができます。このデータをオンラインにする必要がある場合を除いて、2番目のデータベースを明示的に必要とすることはありません。 – tadman