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