2016-10-17 15 views
3

私がしたいのは、データベースをカスタムの.rbファイルにダンプすることです。Rails - データベースをファイルにダンプする

私は私がこれを行うことができますseed_dump宝石が見つかりました:その後、私は私のdatebaseが私たちのオーダーであることに気づいたので、私はIDが含まれるようにSO上でこれを見つけた

rails db:seed:dump FILE=db/seeds/my_db_file_name.rb 

を:

rails db:seed:dump FILE=db/seeds/my_db_file_name.rb EXCLUDE=[] 

私のデータベースに新しいレコードを追加するまではうまく見えました。 reseting主キーは、問題を解決したことが判明:

def reset_pk 
    ActiveRecord::Base.connection.tables.each do |t| 
     ActiveRecord::Base.connection.reset_pk_sequence!(t) 
    end 
    redirect_to root_url 
end 

私は今、何をしたいのですが今のように、毎回私はレコードが「順不同で」あるデータ・ベースをダンプ、ダンププロセスを簡素化することです、私は以下で説明します。

LabOfferという2つのモデルがあるとします。ラボには多くのオファーがあります。したがって、Offerオブジェクトを作成するには、最初にLabオブジェクトを作成する必要があります。私は、スキーマをダンプするときしかし、私のファイルは、次のようになります。

Offer.create... 
Offer.create... 
Offer.create 

Lab.create... 
Lab.create... 
Lab.create... 

と私はそれをシードしようとすると、オファーが研究所の前に作成されているとして、それはそれを行うことはありません、それは他の方法でなければなりません。

私の質問は、Labsが最初に作成されるようにデータベースをダンプする際に実際に関係を維持する方法があるかどうかです。

rails db:seed:dump FILE=db/seeds/my_db_file_name.rb EXCLUDE=[] MODELS="Lab, Offer" 

私はそれをしたいので、この1は、順序を保持しますが、簡単な方法は、(有する場合に存在する場合、私は疑問に思う:私はこのような何かをするために管理

EDIT

15、2モデルだけでなく20モデル)。

+3

なぜこのためのRubyファイルが必要ですか?なぜデータベースのバックアップ/ダンプツールを使用しないのですか? –

+0

私はむしろレールと英雄のものに新しいです、そして、私は何かを混乱させる場合に備えて、このデータベースをファイルに入れたいと思います。私はherokuからデータベースを取得するために 'heroku pg:pull DATABASE_URL databasename --app my_app_name'を使用しますが、私が言ったように、すべてのレコードを削除しないようにもう一歩踏み出してください。 – Ancinek

+1

あなたはローカルのPostgreSQLにデータベースをコピーするために 'pg:pull'を使っていますか?ローカルデータベースをダンプするために['pg_dump'](https://www.postgresql.org/docs/current/static/app-pgdump.html)を使用しないでください。 –

答えて

0

一度に1つの表を希望の順序でダンプ/復元することができます。

関連する問題