2013-09-27 7 views
5

私たちのpostgresデータベースには、公開スキーマとメタデータスキーマという2つのスキーマがあります。テスト用のデータベースに両方のスキーマが必要ですが、rake db:schema:dumpは公開スキーマのみをダンプします。 をdatabase.ymlファイルに追加すると、両方のスキーマがダンプされますが、スキーマ情報は存在しません。rake db:dump:schemaを使用して複数のpostgresスキーマをダンプする方法

どのようにしてdb/schema.rbに両方のスキーマをダンプすればいいですか?rake db:test:prepareでロードできますか?

+1

コードを読むと、ネイティブフォーマットでダンプしない限り可能ではないと思います。たとえば、table_name_prefixを追加できますが、これはグローバルであり、すべてのテーブルに追加されます。同様に、 "ActiveRecord :: Base.table_name_prefix = 'public' 'を試してみてください。 – Rob

答えて

2

答えがスキーマファイルの代わりに構造ファイルを使用するように見えます。

# use a .sql structure instead of a schema.rb for the schema 
config.active_record.schema_format = :sql 

をapplication.rbするためにこれを追加あなたのschema.rbファイルを削除

これは現在のスキーマの構造(SQL)intead(RB)を使用してデータベースをダンプし、それだろうより表現力豊かなものにすることができます。しかし、現在はデータベースベンダーに縛られています(大きな問題ではありません)。

bundle exec rake db:test:prepare