1

Rails 3 アプリケーションに次のスコープを実装しました。

scope :popular, lambda { |l = 5| order('views desc').limit(l) }

ただし、そのレコードを直接カウントしようとすると、スコープ フィルターが適用されないようです。

例えば:

Post.popular.size #=> 20

ログを確認すると、次のクエリが実行されます。

SQL (0.4ms)  SELECT COUNT(*) AS count_id FROM `posts` LIMIT 5

今私が実行すると

Post.popular.all.size #=> 5

そして、正しいクエリが実行されます:

Post Load (1.5ms)  SELECT `posts`.* FROM `posts` ORDER BY views desc LIMIT 5

他の誰かがこの種の行動を経験しましたか? もしそうなら、これが予想される動作なのか、それともバグに直面しているのでしょうか?

敬具、DBA

4

0 に答える 0