Ruby Sequel上带有数据库_cleaner的Rspec导致外键截断错误

Ruby Sequel上带有数据库_cleaner的Rspec导致外键截断错误,ruby,rspec,database-cleaner,sequel-gem,Ruby,Rspec,Database Cleaner,Sequel Gem,我使用DatabaseCleaner在以下续集模型上运行RSpec测试 class User < Sequel::Model one_to_many :memberships many_through_many :accounts, [[:memberships, :user_id, :account_id]] end class Account < Sequel::Model one_to_many :memberships ma

我使用DatabaseCleaner在以下续集模型上运行RSpec测试

class User < Sequel::Model
      one_to_many :memberships
      many_through_many :accounts, [[:memberships, :user_id, :account_id]]
end

class Account < Sequel::Model 
      one_to_many :memberships
      many_through_many :users, [[:memberships, :user_id, :account_id]]
end

class Membership < Sequel::Model
      many_to_one :account
      many_to_one :user
end
我的DatabaseCleaner设置为:

  config.before(:suite) do
    DatabaseCleaner.strategy = :transaction
    DatabaseCleaner.clean_with(:truncation)
  end
DatabaseCleaner应该在截断之前取消设置外键约束,就像ActiveRecord一样,它可以正常工作

我的问题是:这是一个DatabaseCleaner Sequel bug,还是与我使用Sequel many-to-many插件有关?

好的,这是一个开放的问题。解决方法是在截断引用键约束并随后重新启用它们之前禁用它们

对于MySQL,它将是这样的:

DB.run('SET FOREIGN_KEY_CHECKS=0;')
DatabaseCleaner.clean_with(:truncation)
DB.run('SET FOREIGN_KEY_CHECKS=1;')
DB.run('SET FOREIGN_KEY_CHECKS=0;')
DatabaseCleaner.clean_with(:truncation)
DB.run('SET FOREIGN_KEY_CHECKS=1;')