mysql错误:无法销毁使用factoryGirl创建的对象

mysql错误:无法销毁使用factoryGirl创建的对象,mysql,rspec,connection,destroy,initialization,Mysql,Rspec,Connection,Destroy,Initialization,我使用mysql数据库在rails中运行rspec。在我使用factoryGirl创建了一个对象之后,我想销毁它,以便db在下一个运行规范时看起来干净。 以下是我在规范中的设置方式: before (:each) do User.destroy_all @user = Factory.create :user end after (:each) do @user.destroy end 运行rspec时出错: Failure/Error: @user.destroy_all Na

我使用mysql数据库在rails中运行rspec。在我使用factoryGirl创建了一个对象之后,我想销毁它,以便db在下一个运行规范时看起来干净。 以下是我在规范中的设置方式:

before (:each) do
  User.destroy_all
  @user = Factory.create :user
end

after (:each) do
 @user.destroy
end
运行rspec时出错:

Failure/Error: @user.destroy_all
 NameError:
   uninitialized constant User::connection

Failure/Error: @user.destroy
 NameError:
   uninitialized constant User::connection
我在用户模型中设置:dependent=>:destroy
这里有什么问题?

问题是@user class变量引用的对象是未初始化的常量。例如,FactoryGirl工作正常,您的变量没有正确实例化@user对象。当连接不是datbase表字段时,您可能有一个对连接的引用

如果是MySQL问题,则会出现与ActiveRecord相关的错误消息

如果要在测试之前/之后清理数据库,请尝试使用此gem。它工作得很好。

下面是我在中配置RSpec的方式


小心。。。更不用说工厂的妻子了!那就更难摧毁了!因此,升级前请小心-
RSpec.configure do |config|        
  config.before(:suite) do
    DatabaseCleaner.strategy = :transaction
    DatabaseCleaner.clean_with(:truncation)
  end
  config.before(:each) do
    DatabaseCleaner.start
  end
  config.after(:each) do
    DatabaseCleaner.clean
  end
end