Ruby on rails rspec不合格-“;不能';“找不到表”;,但是rake db:test:prepare不';我修不好
我一直在做一个需要多次迁移的大型重构。突然之间,rspec失败了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,
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
运行,因此我将保留这个答案,以防将来有人偶然发现这个问题。这是我的问题。帮我省去了很多挫折!