2013-09-27 287 views
5

Cơ sở dữ liệu postgres của chúng tôi có hai lược đồ: lược đồ công khai và lược đồ siêu dữ liệu. Tôi cần cả hai lược đồ trong cơ sở dữ liệu thử nghiệm của mình, nhưng rake db:schema:dump chỉ đổ lược đồ công khai. Nếu tôi thêm schema_search_path: "public, metadata" vào tệp database.yml của mình, nó sẽ kết xuất cả hai lược đồ, nhưng thông tin lược đồ không có ở đó.Làm thế nào tôi có thể đổ nhiều lược đồ postgres bằng cách sử dụng rake db: dump: schema

Làm cách nào để tôi có thể kết xuất cả hai lược đồ thành db/schema.rb để tôi có thể tải chúng bằng rake db:test:prepare?

+1

Đọc mã, tôi không nghĩ là có thể trừ khi bạn đổ ở định dạng gốc. Ví dụ, tôi thấy bạn có thể thêm một table_name_prefix, nhưng đó là toàn cầu và sẽ được thêm vào tất cả các bảng. Giống như, bạn có thể thử "ActiveRecord :: Base.table_name_prefix = 'public.'", Nó có thể hoạt động. – Rob

Trả lời

2

Dường như với tôi câu trả lời là sử dụng tệp cấu trúc thay vì tệp lược đồ.

Thêm phần này vào application.rb

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

loại bỏ tập tin của bạn schema.rb

này bây giờ sẽ đổ cơ sở dữ liệu bằng cách sử dụng cấu trúc (SQL) intead của schema (rb) và nó có thể biểu cảm hơn. Tuy nhiên, nó bây giờ là gắn liền với nhà cung cấp cơ sở dữ liệu của bạn (không phải là một việc lớn đối với chúng tôi).

bundle exec rake db:test:prepare