From 56412f4441f0954d3181eafbfb7b60b361e05d11 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 23 Apr 2005 18:18:18 +0000 Subject: Optimize counting of has_many associations by setting the association to empty if the count is 0 git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1235 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- activerecord/lib/active_record/associations/has_many_association.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'activerecord') diff --git a/activerecord/lib/active_record/associations/has_many_association.rb b/activerecord/lib/active_record/associations/has_many_association.rb index 5b0ac25d17..31b8ac6b9e 100644 --- a/activerecord/lib/active_record/associations/has_many_association.rb +++ b/activerecord/lib/active_record/associations/has_many_association.rb @@ -92,13 +92,17 @@ module ActiveRecord end def count_records - if has_cached_counter? + count = if has_cached_counter? @owner.send(:read_attribute, cached_counter_attribute_name) elsif @options[:counter_sql] @association_class.count_by_sql(@counter_sql) else @association_class.count(@counter_sql) end + + @target = [] and loaded if count == 0 + + return count end def has_cached_counter? -- cgit v1.2.3