在Rails3中测试Cancan授权时出现SQLite3错误:没有这样的表:能力:DELETE FROM“能力”WHERE 1 = 1

时间:2010-08-04 23:55:14

标签: ruby-on-rails-3 cancan

使用Cancan(http://github.com/ryanb/cancan)在Rails3 beta4中运行默认测试时遇到问题。测试是普通的自动生成的,看起来像

测试“真相”   断言是真的 端

每次测试(单位和功能)都会产生以下错误:

ActiveRecord :: StatementInvalid:SQLite3 :: SQLException:没有这样的表:能力:DELETE FROM“能力”WHERE 1 = 1

即使在test_helpers.rb

中定义了用法和能力,也会发生这种情况

我认为这是由于Cancan用于授权的Ability模型,因为它不是持久的(只是一个普通的Ruby类),因此在DB中没有表。也许有些东西试图在测试后拆除能力并错误地试图从数据库中删除能力?我该如何检查(更重要的是,修复)?

再一次,测试中没有自定义逻辑:它们是由Rails3 beta4生成的。

(仅限FYI,Ability类不会从ActiveRecord :: Base继承并包含CanCan :: Ability。此外,应用程序 - 授权和全部 - 工作正常。)

环境: - 红宝石1.8.7-p249 - rails 3.0.0.beta4 - 康康1.2.0 - 设计1.1.rc2

还有其他人遇到过这个问题吗?

感谢您的帮助!

更新:尝试切换到PostgreSQL。显然,错误与数据库无关:运行“rake test”时出现以下错误

ActiveRecord :: StatementInvalid:PGError:错误:关系“能力”不存在 第1行:删除“能力”                     ^ :删除“能力”

1 个答案:

答案 0 :(得分:1)

问题解决了:我有一个能力.yml夹具文件。删除后,错误消失了。

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