Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.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 rspec不合格-“;不能';“找不到表”;,但是rake db:test:prepare不';我修不好_Ruby On Rails_Ruby On Rails 3_Rspec_Rake - Fatal编程技术网

Ruby on rails rspec不合格-“;不能';“找不到表”;,但是rake db:test:prepare不';我修不好

Ruby on rails rspec不合格-“;不能';“找不到表”;,但是rake db:test:prepare不';我修不好,ruby-on-rails,ruby-on-rails-3,rspec,rake,Ruby On Rails,Ruby On Rails 3,Rspec,Rake,我一直在做一个需要多次迁移的大型重构。突然之间,rspec失败了 Could not find table 'users' (ActiveRecord::StatementInvalid) users表就在schema.rb中: create_table "users", :primary_key => "user_id", :force => true do |t| t.string "first_name", :limit => 100,

我一直在做一个需要多次迁移的大型重构。突然之间,rspec失败了

Could not find table 'users' (ActiveRecord::StatementInvalid)
users
表就在schema.rb中:

  create_table "users", :primary_key => "user_id", :force => true do |t|
    t.string   "first_name",          :limit => 100,                                    :null => false
    t.string   "last_name",           :limit => 100,                                    :null => false
    (...)
    t.boolean  "current_student",                    :default => true,                  :null => false
    t.boolean  "unregistered",                       :default => false,                 :null => false
  end
以下是我尝试过的:

  • rake数据库:测试:准备
    :无更改
  • 删除
    schema.rb
    并使用
    rake db:schema:dump重新创建它:无更改

我的应用程序运行良好-我可以创建用户、登录、注销等等。但是我的测试都不起作用。接下来我应该尝试什么?

运行
rake db:test:load
schema.rb
文件创建测试数据库

rake db:test:load从当前db/schema.rb重新创建测试数据库。在随后的尝试中,最好先运行db:test:prepare,因为它首先检查挂起的迁移并适当地警告您


更多信息:

运行
rakedb:test:load
schema.rb
文件创建测试数据库

rake db:test:load从当前db/schema.rb重新创建测试数据库。在随后的尝试中,最好先运行db:test:prepare,因为它首先检查挂起的迁移并适当地警告您

更多信息:

找到了问题

在我的一个模型中,我的作用域是这样写的:

scope :registered, where(:registered => true)
在堆栈跟踪的深处,实际上有一个对这行的引用。我将范围更改为:

scope :registered, :conditions => {:registered => true}
…一切都很顺利。唷。

发现了问题

在我的一个模型中,我的作用域是这样写的:

scope :registered, where(:registered => true)
在堆栈跟踪的深处,实际上有一个对这行的引用。我将范围更改为:

scope :registered, :conditions => {:registered => true}

…一切都很顺利。唷。

谢谢,试过了,但没用……结果发现有一个范围有问题。当我尝试运行我的规格时,它没有触发应用程序中的任何错误。发现问题。在我的一个模型中,有一个作用域是这样写的:scope:unregistered,其中(:unregistered=>true)在堆栈跟踪的深处,实际上有一个对这一行的引用。我将作用域更改为:scope:unregistered,:conditions=>{:unregistered=>true}…所有操作都正常。唷,很高兴你知道了!通常,这将弥补一个糟糕的
rake db:test:prepare
运行,因此我将保留这个答案,以防将来有人偶然发现这个问题。这是我的问题。帮我省去了很多挫折!谢谢,我试过了,但没用……结果发现有一个范围有问题。当我尝试运行我的规格时,它没有触发应用程序中的任何错误。发现问题。在我的一个模型中,有一个作用域是这样写的:scope:unregistered,其中(:unregistered=>true)在堆栈跟踪的深处,实际上有一个对这一行的引用。我将作用域更改为:scope:unregistered,:conditions=>{:unregistered=>true}…所有操作都正常。唷,很高兴你知道了!通常,这将弥补一个糟糕的
rake db:test:prepare
运行,因此我将保留这个答案,以防将来有人偶然发现这个问题。这是我的问题。帮我省去了很多挫折!