RSpec, Postgres и DatabaseClearer: возможно ли сбросить идентификаторы с помощью стратегии транзакций?

Я знаю, что не должен кодировать конкретные идентификаторы, но иногда это просто делает жизнь намного проще. Я использую DatabaseCleaner с RSpec и Postgres, и мне интересно, можно ли сбросить идентификаторы между спецификациями при использовании стратегии транзакций?

Вот мой ток spec_helper:

RSpec.configure do |config|

  config.expect_with :rspec do |c|
    c.syntax = [:should, :expect]
  end

  config.before(:suite) do
    DatabaseCleaner.clean_with(:truncation)
    DatabaseCleaner.strategy = :transaction
    load_seed_data
  end

  config.before(:all) do
    DatabaseCleaner.start
  end

  config.after(:all) do
    DatabaseCleaner.clean
  end

  config.example_status_persistence_file_path = "./spec/failures.txt"
  config.use_transactional_fixtures = true    
  config.infer_base_class_for_anonymous_controllers = false    
  config.order = "random"

  config.include FactoryGirl::Syntax::Methods
  config.include RSpec::Rails::RequestExampleGroup
  config.include Requests::JsonHelpers
  config.include Requests::Extensions

end

1 ответ

Это невозможно, потому что автоинкремент реализуется через механизм, называемый последовательностью, и они не возвращаются в транзакции: /questions/32508190/posledovatelnosti-na-kotoryie-ne-vliyayut-tranzaktsii/32508203#32508203

Другие вопросы по тегам