Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails PG::DependentObjectsStillExist:使用rspec时出错_Ruby On Rails_Ruby_Rspec_Queue_Rails Postgresql - Fatal编程技术网

Ruby on rails PG::DependentObjectsStillExist:使用rspec时出错

Ruby on rails PG::DependentObjectsStillExist:使用rspec时出错,ruby-on-rails,ruby,rspec,queue,rails-postgresql,Ruby On Rails,Ruby,Rspec,Queue,Rails Postgresql,当我跑的时候 $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_cla

当我跑的时候

$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

但是怎么做呢?

你在运行Rails>=4.1吗?有一个新特性,ActiveRecord尝试保持测试模式与schema.rb同步,而无需重新加载整个数据库。您可以在此处阅读:

不幸的是,它不适用于外键:。您可以通过在config/environments/test.rb末尾添加此行来禁用它:

config.active_record.maintain_test_schema = false

可能的解决方案:在rails控制台中运行:
ActiveRecord::Base.connection.execute('DROP TABLE“queue\u classic\u jobs”CASCADE')
。这将消除依赖于表的对象。不,但我将在几天后升级到4.1。我将调查它,然后+1回答一个老问题!