奇怪的Rails 3范围行为

时间:2010-07-31 17:35:18

标签: activerecord ruby-on-rails-3 arel

我在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

0 个答案:

没有答案