Cancan( http://github.com/ryanb/cancan )を使用してRails3beta4でデフォルトのテストを実行すると問題が発生します。テストは、次のようなプレーンなバニラ自動生成テストです。
「真実」をテストし、真の目的を主張します
すべてのテスト(ユニットと機能の両方)で、次のエラーが発生します。
ActiveRecord :: StatementInvalid:SQLite3 :: SQLException:そのようなテーブルはありません:abilities:DELETE FROM "abilities" WHERE 1 = 1
これは、使用法と能力がtest_helpers.rbで定義されている場合でも発生します
これは、Cancanが承認に使用するAbilityモデル(単なるRubyクラス)が原因であり、DBにテーブルがないためだと思います。おそらく、何かがテスト後に能力を破壊しようとしていて、データベースから能力を誤って削除しようとしているのでしょうか?どうすればこれを確認できますか(さらに重要なことに、修正できますか)?
繰り返しになりますが、テストにはカスタムロジックはありません。これらは、Rails3beta4によって生成されたものです。
(FYIAbilityクラスはActiveRecord:: Baseを継承せず、CanCan :: Abilityを含みます。また、アプリ(承認およびすべて)は正常に機能します。)
環境:-ruby 1.8.7-p249 --rails 3.0.0.beta4-cancan 1.2.0 --devise 1.1.rc2
他の誰かがこの問題に遭遇しますか?
ご協力いただきありがとうございます !
更新:PostgreSQLに切り替えてみました。明らかに、エラーはDBに依存しません:「raketest」の実行時に次のエラーが発生しました
ActiveRecord :: StatementInvalid:PGError:ERROR:リレーション「abilities」が存在しません行1:DELETE FROM "abilities" ^:DELETE FROM "abilities"