2013-10-21 34 views
6

kullanarak.

Benim anlayış bu hat gelince

create_table "queue_classic_jobs", force: true do |t|; end 

RSpec bir

DROP TABLE "queue_classic_jobs" 

komutu çalıştırır olmasıdır. Ben

DROP TABLE "queue_classic_jobs" CASCADE 

Ama nasıl RSpec yapmak zorunda gibi bana bakıyor

O trows bu hata

PG::DependentObjectsStillExist: ERROR: cannot drop table queue_classic_jobs because 
other objects depend on it (ActiveRecord::StatementInvalid) 
DETAIL: function lock_head(character varying) depends on type queue_classic_jobs 
function lock_head(character varying,integer) depends on type queue_classic_jobs 
HINT: Use DROP ... CASCADE to drop the dependent objects too. 
: DROP TABLE "queue_classic_jobs" 

?

+1

Olası çözüm: raylar konsol vadede Sen config/ortamlar/test.rb sonunda bu satır ekleyerek devre dışı bırakabilirsiniz cascade ')'. Bu, masaya bağlı olan nesnelerden kurtulur. –

cevap

10

Rails> = 4.1 çalışıyor musunuz? ActiveRecord, test şemanızı schema.rb ile tüm veritabanını yeniden yüklemeden senkronize etmeye çalışan yeni bir özellik var. Burada okuyabilirsiniz: http://guides.rubyonrails.org/4_1_release_notes.html#railties-notable-changes.

Ne yazık ki yabancı anahtarlarla çalışmıyor: https://github.com/rails/rails/issues/14708. `ActiveRecord :: Base.connection.execute ('DROP TABLE "queue_classic_jobs":

config.active_record.maintain_test_schema = false 
+1

Hayır, ancak birkaç gün içinde 4.1'e geçiyorum. Eski bir soruya cevap vermek için + 1'e bakacak! –

+0

Mükemmel, teşekkürler! – recurser