aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorRick Olson <technoweenie@gmail.com>2006-07-24 04:55:16 +0000
committerRick Olson <technoweenie@gmail.com>2006-07-24 04:55:16 +0000
commit971e03f24e1121a2fe03beab23b0370a64fcfc37 (patch)
treee7c5df3357054e5a30d0b71d616036f5abe0ac86 /activerecord
parent04d9e94e88be0ba076b0fef980e8bde8e25061d9 (diff)
downloadrails-971e03f24e1121a2fe03beab23b0370a64fcfc37.tar.gz
rails-971e03f24e1121a2fe03beab23b0370a64fcfc37.tar.bz2
rails-971e03f24e1121a2fe03beab23b0370a64fcfc37.zip
Allow #count through a has_many association to accept :include. [Dan Peterson]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4618 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/CHANGELOG2
-rwxr-xr-xactiverecord/lib/active_record/associations.rb1
-rw-r--r--activerecord/lib/active_record/associations/has_many_association.rb1
-rw-r--r--activerecord/test/associations_go_eager_test.rb4
4 files changed, 7 insertions, 1 deletions
diff --git a/activerecord/CHANGELOG b/activerecord/CHANGELOG
index d34cf3d2d6..df012b91ca 100644
--- a/activerecord/CHANGELOG
+++ b/activerecord/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+* Allow #count through a has_many association to accept :include. [Dan Peterson]
+
* create_table rdoc: suggest :id => false for habtm join tables. [Zed Shaw]
* PostgreSQL: return array fields as strings. #4664 [Robby Russell]
diff --git a/activerecord/lib/active_record/associations.rb b/activerecord/lib/active_record/associations.rb
index 5eb6495b9d..192c7b7a5f 100755
--- a/activerecord/lib/active_record/associations.rb
+++ b/activerecord/lib/active_record/associations.rb
@@ -17,7 +17,6 @@ module ActiveRecord
class HasManyThroughAssociationPolymorphicError < ActiveRecordError #:nodoc:
def initialize(owner_class_name, reflection, source_reflection)
- source_reflection = source_reflection
super("Cannot have a has_many :through association '#{owner_class_name}##{reflection.name}' on the polymorphic object '#{source_reflection.class_name}##{source_reflection.name}'.")
end
end
diff --git a/activerecord/lib/active_record/associations/has_many_association.rb b/activerecord/lib/active_record/associations/has_many_association.rb
index d00ac96540..e79fa858c4 100644
--- a/activerecord/lib/active_record/associations/has_many_association.rb
+++ b/activerecord/lib/active_record/associations/has_many_association.rb
@@ -48,6 +48,7 @@ module ActiveRecord
options[:conditions] = options[:conditions].nil? ?
@finder_sql :
@finder_sql + " AND (#{sanitize_sql(options[:conditions])})"
+ options[:include] = @reflection.options[:include]
@reflection.klass.count(column_name, options)
end
diff --git a/activerecord/test/associations_go_eager_test.rb b/activerecord/test/associations_go_eager_test.rb
index d2ae4e0dd9..ddcd72d045 100644
--- a/activerecord/test/associations_go_eager_test.rb
+++ b/activerecord/test/associations_go_eager_test.rb
@@ -356,4 +356,8 @@ class EagerAssociationTest < Test::Unit::TestCase
assert_equal 2, one.comments.size
assert_equal 2, one.categories.size
end
+
+ def test_count_with_include
+ assert_equal 3, authors(:david).posts_with_comments.count(:conditions => "length(comments.body) > 15")
+ end
end