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