Ошибка SQLite3 при тестировании авторизаций Cancan в Rails3: такой таблицы нет: Способности: УДАЛИТЬ ИЗ "Способностей" ГДЕ 1 = 1 - PullRequest
1 голос
/ 05 августа 2010

У меня проблемы с запуском стандартных тестов в Rails3 beta4 с Cancan (http://github.com/ryanb/cancan).. Это обычные ванильные тесты, которые выглядят как

тест "правда" сделать утверждать истину конец

Каждый отдельный тест (как единичный, так и функциональный) выдает следующую ошибку:

ActiveRecord :: StatementInvalid: SQLite3 :: SQLException: нет такой таблицы: способности: УДАЛИТЬ ИЗ "способностей" ГДЕ 1 = 1

Это происходит, даже если использование и способность определены в test_helpers.rb

Я предполагаю, что это связано с моделью способностей, которую Cancan использует для авторизации, поскольку она не сохраняется (просто простой класс Ruby) и, следовательно, не имеет таблицы в БД. Возможно, что-то пытается разрушить способности после тестов и ошибочно пытается удалить способности из базы данных? Как я могу проверить это (и, что более важно, исправить)?

Еще раз, в тестах нет никакой пользовательской логики: они сгенерированы Rails3 beta4.

(К вашему сведению, класс Ability не наследуется от ActiveRecord :: Base и включает CanCan :: Ability. Кроме того, приложение - авторизация и все - работает нормально.)

Окружающая среда: - ruby ​​1.8.7-p249 - рельсы 3.0.0.beta4 - cancan 1.2.0 - разработать 1.1.rc2

Кто-нибудь еще сталкивался с этой проблемой?

Спасибо за вашу помощь!

ОБНОВЛЕНИЕ: попытался перейти на PostgreSQL. Очевидно, ошибка не зависит от БД: при запуске "rake test" * получена следующая ошибка

ActiveRecord :: StatementInvalid: PGError: ОШИБКА: отношение "способности" не существует ЛИНИЯ 1: УДАЛИТЬ ИЗ "Способностей" ^ : УДАЛИТЬ ИЗ "Способностей"

1 Ответ

1 голос
/ 09 августа 2010

Проблема решена: у меня был файл крепежа abilities.yml. После удаления ошибка исчезла.

http://github.com/ryanb/cancan/issues/closed#issue/109

...