0

我有一个包含多个报告的作业模型。报告模型有一个范围......

范围:未删除,其中(:已删除 => 0)

如果我像这样从工作中调用范围......

@job.reports.undeleted

我得到...

Sphinx 查询 (16.3ms) @deleted 0 Sphinx 找到 0 个结果

但如果我这样称呼它...

@job.reports.where(:deleted => 0)

我得到...

报告负载 (0.4ms) SELECT reports.* FROM reportsWHERE reportsjob_id= 1907 和reportsdeleted= 0

它返回一个预期的结果。

为什么在这种情况下会调用 Thinking Sphinx?而且这只发生在生产中而不是开发中。Thinking Sphinx 在这两种环境中都运行。

4

1 回答 1

0

正如评论中所讨论的,这里的问题是共享名称的 Sphinx 范围和 ActiveRecord 范围undeleted

我不完全确定为什么有时一个优先,有时另一个,尽管我敢说这是由于 Rails 在开发环境中的类重载。

于 2013-06-13T01:15:04.880 回答