7

私が走るとき

$rspec "/any_file"

rspec が schema.rb ファイルにロードされ、データベースがセットアップされます。

私の理解では、この行に関しては

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

Rspec は

DROP TABLE "queue_classic_jobs"

指図。

このエラーが発生します

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"

私にはrspecを作らなければならないように見えます

DROP TABLE "queue_classic_jobs" CASCADE

しかし、どのように?

4

1 に答える 1

10

Rails >= 4.1 を実行していますか? データベース全体をリロードせずに、ActiveRecord がテスト スキーマを schema.rb と同期させようとする新機能があります。ここでそれについて読むことができます: http://guides.rubyonrails.org/4_1_release_notes.html#railties-notable-changes .

残念ながら、外部キーでは機能しません: https://github.com/rails/rails/issues/14708。config/environments/test.rb の最後に次の行を追加することで無効にできます:

config.active_record.maintain_test_schema = false
于 2014-04-16T15:14:43.603 に答える