我在使用 Cancan ( http://github.com/ryanb/cancan ) 在 Rails3 beta4 中运行默认测试时遇到问题。测试是普通的自动生成的,看起来像
测试“真相”确实断言真正的结局
每个测试(单元和功能)都会产生以下错误:
ActiveRecord::StatementInvalid: SQLite3::SQLException: 没有这样的表:能力:从“能力”中删除,其中 1=1
即使在 test_helpers.rb 中定义了使用和能力,也会发生这种情况
我认为这是由于 Cancan 用于授权的能力模型,因为它没有持久化(只是一个普通的 Ruby 类),因此在数据库中没有表。也许有些东西在测试后试图拆除能力并错误地试图从数据库中删除能力?我该如何检查(更重要的是,修复)?
再一次,测试中没有自定义逻辑:它们是由 Rails3 beta4 生成的。
(仅供参考,Ability 类不继承自 ActiveRecord::Base 并包括 CanCan::Ability。此外,应用程序——授权和所有——工作正常。)
环境: - ruby 1.8.7-p249 - rails 3.0.0.beta4 - cancan 1.2.0 - 设计 1.1.rc2
还有其他人遇到这个问题吗?
谢谢你的帮助 !
更新:尝试切换到 PostgreSQL。显然,错误与数据库无关:运行“rake test”时出现以下错误
ActiveRecord::StatementInvalid: PGError: 错误: 关系“能力”不存在第 1 行:从“能力”中删除 ^:从“能力”中删除