aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation/calculations.rb
diff options
context:
space:
mode:
authorErik Michaels-Ober <sferik@gmail.com>2016-03-14 21:57:52 -0700
committerErik Michaels-Ober <sferik@gmail.com>2016-03-19 15:29:07 -0700
commit58772397e9b790e80bcd4d8e51937dc82ecb719e (patch)
tree7edc2ef7e149e25b3d784de1164a61c4d616c11c /activerecord/lib/active_record/relation/calculations.rb
parentdda31d59a03adb7e5aa372e72bb66a3886632f2f (diff)
downloadrails-58772397e9b790e80bcd4d8e51937dc82ecb719e.tar.gz
rails-58772397e9b790e80bcd4d8e51937dc82ecb719e.tar.bz2
rails-58772397e9b790e80bcd4d8e51937dc82ecb719e.zip
Forward ActiveRecord::Relation#count to Enumerable#count if block given
Diffstat (limited to 'activerecord/lib/active_record/relation/calculations.rb')
-rw-r--r--activerecord/lib/active_record/relation/calculations.rb6
1 files changed, 5 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/relation/calculations.rb b/activerecord/lib/active_record/relation/calculations.rb
index 54c9af4898..120f34109e 100644
--- a/activerecord/lib/active_record/relation/calculations.rb
+++ b/activerecord/lib/active_record/relation/calculations.rb
@@ -37,7 +37,11 @@ module ActiveRecord
# Note: not all valid {Relation#select}[rdoc-ref:QueryMethods#select] expressions are valid #count expressions. The specifics differ
# between databases. In invalid cases, an error from the database is thrown.
def count(column_name = nil)
- calculate(:count, column_name)
+ if block_given?
+ to_a.count { |*block_args| yield(*block_args) }
+ else
+ calculate(:count, column_name)
+ end
end
# Calculates the average value on a given column. Returns +nil+ if there's