ActiveRecord кэширует результаты запросов. Первый запрос фактически попадает в базу данных - затем ActiveRecord ожидает завершения операции и анализирует результаты в ее объектах. В следующий раз, когда будет сделан идентичный запрос, результаты будут кэшированы, поэтому они будут возвращены вам немедленно, а не возвращаться обратно в базу данных.
Проверьте API для QueryCache : похоже, вы можете очистить кеш запросов (connection.clear_query_cache
), если хотите стереть кэшированные запросы.
Этот вопрос SO также предлагает self.class.uncached do ... end
обойти кеш, но я не уверен, применимо ли это в Rails 3.