Почему в моем приложении rails пропадают записи? - PullRequest
2 голосов
/ 24 августа 2011

У меня есть две модели, давайте назовем их A и B. Создание новой записи A иногда будет вызывать создание записи B.

class A < ActiveRecord::Base
  after_create { |a| B.create_for(a) if a.needs_b? }
end

в моем тестовом файле

class TapeTest < ActiveSupport::TestCase
  self.use_transactional_fixtures = false

  test "something" do
    assert_equal(0, B.count)
    a = A.create(:foo => "bar")
    assert_equal(1, B.count)
  end
end

и проверка не выполняется для второго утверждения, даже если это работает, если я скопирую его в консоль. Когда я добавляю вызов debugger в метод B.create_for, запись B действительно создается. Он отображается в БД и всё такое, но как только выполнение возвращается в блок test "something", оно исчезает! Я выключил транзакцию транзакций, чтобы попытаться решить эту проблему, но это не помогает.

РЕДАКТИРОВАТЬ: включение транзакционных исправлений фактически решает эту проблему, но ломает гораздо больше тестов, чем исправляет. Предположим, он должен быть выключен.

1 Ответ

0 голосов
/ 24 августа 2011

Я не уверен, что происходит, но я бы попробовал сделать A.create! (...), чтобы увидеть, возникает ли исключение, вызывающее откат.

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