В приложении 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