<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1494,11 +1494,16 @@ module ActiveRecord #:nodoc:
           end
 
           if scoped?(:find, :order)
-            scoped_order = reverse_sql_order(scope(:find, :order))
-            scoped_methods.select { |s| s[:find].update(:order =&gt; scoped_order) }
+            scope = scope(:find)
+            original_scoped_order = scope[:order]
+            scope[:order] = reverse_sql_order(original_scoped_order)
           end
 
-          find_initial(options.merge({ :order =&gt; order }))
+          begin
+            find_initial(options.merge({ :order =&gt; order }))
+          ensure
+            scope[:order] = original_scoped_order if original_scoped_order
+          end
         end
 
         def reverse_sql_order(order_query)</diff>
      <filename>activerecord/lib/active_record/base.rb</filename>
    </modified>
    <modified>
      <diff>@@ -27,6 +27,24 @@ class MethodScopingTest &lt; ActiveRecord::TestCase
     end
   end
 
+  def test_scoped_find_last
+    highest_salary = Developer.find(:first, :order =&gt; &quot;salary DESC&quot;)
+
+    Developer.with_scope(:find =&gt; { :order =&gt; &quot;salary&quot; }) do
+      assert_equal highest_salary, Developer.last
+    end
+  end
+
+  def test_scoped_find_last_preserves_scope
+    lowest_salary = Developer.find(:first, :order =&gt; &quot;salary ASC&quot;)
+    highest_salary = Developer.find(:first, :order =&gt; &quot;salary DESC&quot;)
+
+    Developer.with_scope(:find =&gt; { :order =&gt; &quot;salary&quot; }) do
+      assert_equal highest_salary, Developer.last
+      assert_equal lowest_salary, Developer.first
+    end
+  end
+
   def test_scoped_find_combines_conditions
     Developer.with_scope(:find =&gt; { :conditions =&gt; &quot;salary = 9000&quot; }) do
       assert_equal developers(:poor_jamis), Developer.find(:first, :conditions =&gt; &quot;name = 'Jamis'&quot;)</diff>
      <filename>activerecord/test/cases/method_scoping_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>389534c38c3baaa63ce5cc2ba3bd169415419167</id>
    </parent>
  </parents>
  <author>
    <name>Daniel Luz</name>
    <login>mernen</login>
    <email>dev@mernen.com</email>
  </author>
  <url>http://github.com/rails/rails/commit/f7bd0beb67c5d9d50e37aa596605b91e61197fbe</url>
  <id>f7bd0beb67c5d9d50e37aa596605b91e61197fbe</id>
  <committed-date>2008-12-21T15:24:06-08:00</committed-date>
  <authored-date>2008-12-21T14:38:12-08:00</authored-date>
  <message>Ensure Model#last doesn't affects order for another finders inside the same scope [#1499 state:resolved]

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