diff options
author | David Heinemeier Hansson <david@loudthinking.com> | 2005-03-06 11:53:49 +0000 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2005-03-06 11:53:49 +0000 |
commit | 5e44eda7872c6ee33e0d09a4b9fd78896e14b95a (patch) | |
tree | b64009226562aa04ce107692e726f545b3f9895f | |
parent | dfac1cea3d851000116a23ab14c2b1ae981f7a12 (diff) | |
download | rails-5e44eda7872c6ee33e0d09a4b9fd78896e14b95a.tar.gz rails-5e44eda7872c6ee33e0d09a4b9fd78896e14b95a.tar.bz2 rails-5e44eda7872c6ee33e0d09a4b9fd78896e14b95a.zip |
Fixed that HasManyAssociation#count was using :finder_sql rather than :counter_sql if it was available #445 [Scott Barron]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@834 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
-rw-r--r-- | activerecord/CHANGELOG | 2 | ||||
-rw-r--r-- | activerecord/lib/active_record/associations/has_many_association.rb | 4 | ||||
-rwxr-xr-x | activerecord/test/fixtures/company.rb | 2 |
3 files changed, 6 insertions, 2 deletions
diff --git a/activerecord/CHANGELOG b/activerecord/CHANGELOG index 2ef7bc581a..96ba906434 100644 --- a/activerecord/CHANGELOG +++ b/activerecord/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Fixed that HasManyAssociation#count was using :finder_sql rather than :counter_sql if it was available #445 [Scott Barron] + * Added better defaults for composed_of, so statements like composed_of :time_zone, :mapping => %w( time_zone time_zone ) can be written without the mapping part (it's now assumed) * Added MacroReflection#macro which will return a symbol describing the macro used (like :composed_of or :has_many) #718, #248 [james@slashetc.com] diff --git a/activerecord/lib/active_record/associations/has_many_association.rb b/activerecord/lib/active_record/associations/has_many_association.rb index 9aed6af48b..0f79e4ccef 100644 --- a/activerecord/lib/active_record/associations/has_many_association.rb +++ b/activerecord/lib/active_record/associations/has_many_association.rb @@ -33,7 +33,9 @@ module ActiveRecord # Count the number of associated records. All arguments are optional. def count(runtime_conditions = nil) - if @options[:finder_sql] + if @options[:counter_sql] + @association_class.count_by_sql(@counter_sql) + elsif @options[:finder_sql] @association_class.count_by_sql(@finder_sql) else sql = @finder_sql diff --git a/activerecord/test/fixtures/company.rb b/activerecord/test/fixtures/company.rb index f4df7203b8..17a71e7e20 100755 --- a/activerecord/test/fixtures/company.rb +++ b/activerecord/test/fixtures/company.rb @@ -6,7 +6,7 @@ end class Firm < Company - has_many :clients, :order => "id", :dependent => true + has_many :clients, :order => "id", :dependent => true, :counter_sql => "SELECT COUNT(*) FROM companies WHERE firm_id = 1 AND (type = 'Client' OR type = 'SpecialClient' OR type = 'VerySpecialClient' )" has_many :clients_sorted_desc, :class_name => "Client", :order => "id DESC" has_many :clients_of_firm, :foreign_key => "client_of", :class_name => "Client", :order => "id" has_many :clients_like_ms, :conditions => "name = 'Microsoft'", :class_name => "Client", :order => "id" |