Как выполнить оператор SQL после загрузки фиксаторов, но до создания точки сохранения? - PullRequest
0 голосов
/ 16 января 2011

У нас есть модель, которая получает порядковый номер из идентификатора другой модели, используя auto_increment в таблице другой модели.Это значение устанавливается равным нулю при каждом перезапуске сервера БД, поэтому порядковые номера сбрасываются.Чтобы обойти это, в блоке after_initialize мы устанавливаем значение auto_increment равным максимальному значению последовательности плюс один, и все хорошо.

Однако в тестах блок запускается до загрузки осветителей, поэтомумаксимум возвращается как ноль.Затем, когда тесты запускаются, значение становится слишком низким, и поэтому тесты не выполняются.

Одним из возможных решений является обновление значения в блоке настройки, но изменение таблицы фиксирует текущую транзакцию и поэтому откат призавершение теста заканчивается неудачей.

Как изменить значение AUTO_INCREMENT после загрузки приборов, но за до точка сохранения создана?

1 Ответ

0 голосов
/ 16 января 2011

Наконец-то нашел способ сделать это, исправив обезьяны load_fixtures в конце test_helper.rb:

module ActiveRecord
  module TestFixtures
    def load_fixtures_with_auto_increment_reset
      load_fixtures_without_auto_increment_reset
      # code to reset auto_increment goes here
    end

    alias_method :load_fixtures_without_auto_increment_reset, :load_fixtures
    alias_method :load_fixtures, :load_fixtures_with_auto_increment_reset
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...