1

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"

4

1 に答える 1

1

問題が解決しました:abilities.ymlフィクスチャファイルがありました。それを削除した後、エラーはなくなりました。

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

于 2010-08-08T20:56:23.693 に答える