我一直在做一个需要多次迁移的主要重构。突然间,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 db:test:prepare
:无变化schema.rb
并使用rake db:schema:dump
重新创建:无更改我的应用程序运行正常 - 我可以创建用户,登录,注销等等。但是我的测试都没有用。我接下来应该尝试什么?
答案 0 :(得分:4)
运行rake db:test:load
而不是从schema.rb
文件
rake db:test:load从当前的db / schema.rb重新创建测试数据库。在后续尝试中,首先运行db:test:prepare是一个好主意,因为它首先检查挂起的迁移并适当地发出警告。
更多信息:http://guides.rubyonrails.org/testing.html#preparing-your-application-for-testing
答案 1 :(得分:0)
发现了这个问题。
在我的一个模型中,我写了一个范围:
scope :registered, where(:registered => true)
在堆栈跟踪深处,实际上存在对此行的引用。我将范围更改为:
scope :registered, :conditions => {:registered => true}
......一切顺利。呼。