<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -103,7 +103,7 @@ module ActiveRecord
       attr_reader :proxy_scope, :proxy_options
 
       [].methods.each do |m|
-        unless m =~ /(^__|^nil\?|^send|^object_id$|class|extend|find|count|sum|average|maximum|minimum|paginate|first|last|empty?)/
+        unless m =~ /(^__|^nil\?|^send|^object_id$|class|extend|find|count|sum|average|maximum|minimum|paginate|first|last|empty?|any?)/
           delegate m, :to =&gt; :proxy_found
         end
       end
@@ -140,6 +140,14 @@ module ActiveRecord
         @found ? @found.empty? : count.zero?
       end
 
+      def any?
+        if block_given?
+          proxy_found.any? { |*block_args| yield(*block_args) }
+        else
+          !empty?
+        end
+      end
+
       protected
       def proxy_found
         @found || load_found</diff>
      <filename>activerecord/lib/active_record/named_scope.rb</filename>
    </modified>
    <modified>
      <diff>@@ -184,6 +184,28 @@ class NamedScopeTest &lt; ActiveRecord::TestCase
     end
   end
 
+  def test_any_should_not_load_results
+    topics = Topic.base
+    assert_queries(1) do
+      topics.expects(:empty?).returns(true)
+      assert !topics.any?
+    end
+  end
+
+  def test_any_should_call_proxy_found_if_using_a_block
+    topics = Topic.base
+    assert_queries(1) do
+      topics.expects(:empty?).never
+      topics.any? { true }
+    end
+  end
+
+  def test_any_should_not_fire_query_if_named_scope_loaded
+    topics = Topic.base
+    topics.collect # force load
+    assert_no_queries { assert topics.any? }
+  end
+
   def test_should_build_with_proxy_options
     topic = Topic.approved.build({})
     assert topic.approved</diff>
      <filename>activerecord/test/cases/named_scope_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>2681685450631238511cfc3c2f0fa044c1f8033a</id>
    </parent>
  </parents>
  <author>
    <name>Jan De Poorter</name>
    <email>jan@defv.be</email>
  </author>
  <url>http://github.com/rails/rails/commit/93e10f9911fb2a096681ee0a0bc82487a9a06c44</url>
  <id>93e10f9911fb2a096681ee0a0bc82487a9a06c44</id>
  <committed-date>2008-07-23T04:02:17-07:00</committed-date>
  <authored-date>2008-07-23T03:50:16-07:00</authored-date>
  <message>Ensure NamedScope#any? uses COUNT query wherever possible. [#680 state:resolved]

Signed-off-by: Pratik Naik &lt;pratiknaik@gmail.com&gt;</message>
  <tree>92bcb41503ea63aeabcd0354da430630cbf3a683</tree>
  <committer>
    <name>Pratik Naik</name>
    <email>pratiknaik@gmail.com</email>
  </committer>
</commit>
