Rails发现没有返回数据库中存在的记录

时间:2011-08-08 23:08:34

标签: mysql ruby-on-rails activerecord arel

这是我遇到的一件奇怪的事情,我想知道人们是否可以给我一些关于在哪里寻找问题的指示。

我正在做的是在模型上运行查找id。当我在某组记录上运行它时,它们会按预期返回该记录。但是还有另外100条记录,我可以在数据库(mysql)中看到,但运行find命令会返回ActiveRecord :: RecordNotFound异常。

如果我直接在数据库中创建另一条记录,我也无法提取该记录。但是,如果我在rails控制台中执行了一个新命令,那么该记录是可检索的。如果我执行find_by_sql命令,则可以检索记录。

我已经尝试过对表格进行优化,但除此之外,我对于导致这种情况的原因感到很难过。我正在使用Ruby 1.8.7运行Rails 2.3.12和我本地机器上的mysql gem。任何关于可能原因的想法都将不胜感激。谢谢!

编辑感谢指针 - 将记录器附加到我的控制台实例,这暴露了问题 - 一个被遗忘的default_scope,它限制了返回的内容。

1 个答案:

答案 0 :(得分:0)

模型中必定存在限制SQL查询范围的内容。

检查Ruby代码生成的SQL的日志,你会发现有关错误的有用提示。