私がしたいのは、データベースをカスタムの.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
私は今、何をしたいのですが今のように、毎回私はレコードが「順不同で」あるデータ・ベースをダンプ、ダンププロセスを簡素化することです、私は以下で説明します。
Lab
とOffer
という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モデル)。
なぜこのためのRubyファイルが必要ですか?なぜデータベースのバックアップ/ダンプツールを使用しないのですか? –
私はむしろレールと英雄のものに新しいです、そして、私は何かを混乱させる場合に備えて、このデータベースをファイルに入れたいと思います。私はherokuからデータベースを取得するために 'heroku pg:pull DATABASE_URL databasename --app my_app_name'を使用しますが、私が言ったように、すべてのレコードを削除しないようにもう一歩踏み出してください。 – Ancinek
あなたはローカルのPostgreSQLにデータベースをコピーするために 'pg:pull'を使っていますか?ローカルデータベースをダンプするために['pg_dump'](https://www.postgresql.org/docs/current/static/app-pgdump.html)を使用しないでください。 –