<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -3,6 +3,12 @@ class &lt;&lt; ActiveRecord::Base
   include Squirrel::Hook
 end
 
+if defined?(ActiveRecord::NamedScope::Scope)
+  class ActiveRecord::NamedScope::Scope
+    include Squirrel::NamedScopeHook
+  end
+end
+
 [ ActiveRecord::Associations::HasManyAssociation,
   ActiveRecord::Associations::HasAndBelongsToManyAssociation,
   ActiveRecord::Associations::HasManyThroughAssociation</diff>
      <filename>init.rb</filename>
    </modified>
    <modified>
      <diff>@@ -17,12 +17,37 @@ module Squirrel
       end
     end
 
+    def scoped_with_squirrel *args, &amp;blk
+      if blk
+        query = Query.new(self, &amp;blk)
+        self.scoped(query.to_find_parameters)
+      else
+        scoped_without_squirrel(*args)
+      end
+    end
+
     def self.included base
-      return if base.instance_methods.include? 'find_without_squirrel'
-      base.class_eval do
-        alias_method :find_without_squirrel, :find
-        alias_method :find, :find_with_squirrel
+      if ! base.instance_methods.include?('find_without_squirrel') &amp;&amp;
+           base.instance_methods.include?('find')
+        base.class_eval do
+          alias_method :find_without_squirrel, :find
+          alias_method :find, :find_with_squirrel
+        end
       end
+      if ! base.instance_methods.include?('scoped_without_squirrel') &amp;&amp;
+           base.instance_methods.include?('scoped')
+        base.class_eval do
+          alias_method :scoped_without_squirrel, :scoped
+          alias_method :scoped, :scoped_with_squirrel
+        end
+      end
+    end
+  end
+
+  module NamedScopeHook
+    def scoped *args, &amp;blk
+      args = blk ? [Query.new(self, &amp;blk).to_find_parameters] : args
+      scopes[:scoped].call(self, *args)
     end
   end
 
@@ -64,20 +89,25 @@ module Squirrel
         pagination = opts.delete(:paginate) || {}
         model.send(:with_scope, :find =&gt; opts) do
           @conditions.paginate(pagination) unless pagination.empty?
-          find_parameters = { :conditions =&gt; to_find_conditions,
-                              :include    =&gt; to_find_include,
-                              :order      =&gt; to_find_order,
-                              :limit      =&gt; to_find_limit,
-                              :offset     =&gt; to_find_offset }
-          results = model.find args[0], find_parameters
+          results = model.find args[0], to_find_parameters
           if @conditions.paginate?
-            paginate_result_set results, find_parameters
+            paginate_result_set results, to_find_parameters
           end
         end
         results
       end
     end
 
+    def to_find_parameters
+      find_parameters = {}
+      find_parameters[:conditions] = to_find_conditions unless to_find_conditions.blank?
+      find_parameters[:include   ] = to_find_include    unless to_find_include.blank?
+      find_parameters[:order     ] = to_find_order      unless to_find_order.blank?
+      find_parameters[:limit     ] = to_find_limit      unless to_find_limit.blank?
+      find_parameters[:offset    ] = to_find_offset     unless to_find_offset.blank?
+      find_parameters
+    end
+
     # Delegates the to_find_conditions call to the root ConditionGroup
     def to_find_conditions
       @conditions.to_find_conditions</diff>
      <filename>lib/squirrel.rb</filename>
    </modified>
    <modified>
      <diff>@@ -272,4 +272,14 @@ class SquirrelTest &lt; Test::Unit::TestCase
 
     assert_equal [Post.find(7)], query.execute(:all)
   end
+
+  def test_scopes_work_like_find_does
+    assert_equal( {:conditions =&gt; User.find(:query){ id == 2 }.to_find_conditions},
+                  User.scoped{ id == 2 }.proxy_options)
+  end
+
+  def test_scopes_can_be_nested
+    assert_equal(User.find(1),
+                 User.scoped{ name =~ &quot;Jon%&quot; }.scoped{ id &lt; 3 }.first)
+  end
 end</diff>
      <filename>test/squirrel_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>4a6efb445a22686a5d4d60fbb16ab96418c420a1</id>
    </parent>
  </parents>
  <author>
    <name>Jon Yurek</name>
    <email>jyurek@thoughtbot.com</email>
  </author>
  <url>http://github.com/thoughtbot/squirrel/commit/23afa9bc674a1dc89ec981992de4a03ff3efffe4</url>
  <id>23afa9bc674a1dc89ec981992de4a03ff3efffe4</id>
  <committed-date>2008-06-20T13:54:27-07:00</committed-date>
  <authored-date>2008-06-20T13:54:27-07:00</authored-date>
  <message>Added capacity for scoped to take a Squirrel block and do what's right.</message>
  <tree>4b01b8fbb28304840f84d6189c6c266b9c10fefc</tree>
  <committer>
    <name>Jon Yurek</name>
    <email>jyurek@thoughtbot.com</email>
  </committer>
</commit>
