diff options
author | Erik Michaels-Ober <sferik@gmail.com> | 2016-03-14 21:57:52 -0700 |
---|---|---|
committer | Erik Michaels-Ober <sferik@gmail.com> | 2016-03-19 15:29:07 -0700 |
commit | 58772397e9b790e80bcd4d8e51937dc82ecb719e (patch) | |
tree | 7edc2ef7e149e25b3d784de1164a61c4d616c11c /activerecord/lib/active_record/relation/calculations.rb | |
parent | dda31d59a03adb7e5aa372e72bb66a3886632f2f (diff) | |
download | rails-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.rb | 6 |
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 |