0

has_many Reports という Job モデルがあります。Report モデルにはスコープがあります...

スコープ : 削除されていない場所 (: 削除された => 0)

このようにジョブからスコープを呼び出すと...

@job.reports.undeleted

私は...

Sphinx クエリ (16.3ms) @deleted 0 Sphinx Found 0 results

しかし、私がそれを次のように呼ぶと...

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

私は...

レポートの読み込み (0.4ms) SELECT reports.* FROM reportsWHERE reports. job_id= 1907 およびreports. deleted= 0

そして、期待される単一の結果を返します。

この場合、Thinking Sphinx が呼び出されるのはなぜですか? そして、これは開発ではなく本番でのみ発生します。Thinking Sphinx は両方の環境で実行されています。

4

1 に答える 1

0

コメントで説明されているように、ここでの問題は、名前を共有する Sphinx スコープと ActiveRecord スコープundeletedです。

なぜ一方が優先され、他方が優先されるのかは完全にはわかりませんが、開発環境でのRailsのクラスのリロードが原因であるとあえて言います。

于 2013-06-13T01:15:04.880 に答える