aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorMike Gunderloy <MikeG1@larkfarm.com>2009-02-28 11:01:13 -0600
committerPratik Naik <pratiknaik@gmail.com>2009-02-28 17:35:58 +0000
commitc653f700d3afb1208b15fb7fec6250bf3a3f0321 (patch)
treea4917b824ccade75fe04e7d0e3fb50c3be81d29f /activerecord
parentdcd9c7f58e7194c026145273c7695cf968569d33 (diff)
downloadrails-c653f700d3afb1208b15fb7fec6250bf3a3f0321.tar.gz
rails-c653f700d3afb1208b15fb7fec6250bf3a3f0321.tar.bz2
rails-c653f700d3afb1208b15fb7fec6250bf3a3f0321.zip
Fix that scoped find with :group and :having [#2006 state:resolved]
Signed-off-by: Pratik Naik <pratiknaik@gmail.com>
Diffstat (limited to 'activerecord')
-rwxr-xr-xactiverecord/lib/active_record/base.rb2
-rwxr-xr-xactiverecord/test/cases/base_test.rb7
2 files changed, 8 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb
index 55ab1facf2..206b4efa38 100755
--- a/activerecord/lib/active_record/base.rb
+++ b/activerecord/lib/active_record/base.rb
@@ -1759,7 +1759,7 @@ module ActiveRecord #:nodoc:
scope = scope(:find) if :auto == scope
if scope && (scoped_group = scope[:group])
sql << " GROUP BY #{scoped_group}"
- sql << " HAVING #{scoped_having}" if (scoped_having = scope[:having])
+ sql << " HAVING #{scope[:having]}" if scope[:having]
end
end
end
diff --git a/activerecord/test/cases/base_test.rb b/activerecord/test/cases/base_test.rb
index 973bb567bd..eec16c045a 100755
--- a/activerecord/test/cases/base_test.rb
+++ b/activerecord/test/cases/base_test.rb
@@ -1755,6 +1755,13 @@ class BasicsTest < ActiveRecord::TestCase
end
end
+ def test_scoped_find_with_group_and_having
+ developers = Developer.with_scope(:find => { :group => 'salary', :having => "SUM(salary) > 10000", :select => "SUM(salary) as salary" }) do
+ Developer.find(:all)
+ end
+ assert_equal 3, developers.size
+ end
+
def test_find_last
last = Developer.find :last
assert_equal last, Developer.find(:first, :order => 'id desc')