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