Ruby Sequel上带有数据库_cleaner的Rspec导致外键截断错误
我使用DatabaseCleaner在以下续集模型上运行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
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;')