From 5f4053cde5ec6f0d6692cf9f2885fc7819369771 Mon Sep 17 00:00:00 2001 From: Jonathan Viney Date: Thu, 11 Oct 2007 09:41:32 +0000 Subject: [PATCH] --- CHANGELOG | 6 +++++- lib/acts_as_taggable.rb | 6 +++++- test/acts_as_taggable_test.rb | 8 +++++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index f6055eb..8397696 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,10 @@ +[11 October 2007] + +* Make tag_counts work correctly with STI. + [3 October 2007] -# Improve documentation. +* Improve documentation. * Fix TagsHelper and test. diff --git a/lib/acts_as_taggable.rb b/lib/acts_as_taggable.rb index 4a9decb..91c719e 100644 --- a/lib/acts_as_taggable.rb +++ b/lib/acts_as_taggable.rb @@ -96,7 +96,11 @@ def find_options_for_tag_counts(options = {}) scope && scope[:conditions], start_at, end_at - ].compact.join(' AND ') + ] + + conditions << type_condition unless descends_from_active_record? + conditions.compact! + conditions = conditions.join(' AND ') joins = ["LEFT OUTER JOIN #{Tagging.table_name} ON #{Tag.table_name}.id = #{Tagging.table_name}.tag_id"] joins << "LEFT OUTER JOIN #{table_name} ON #{table_name}.#{primary_key} = #{Tagging.table_name}.taggable_id" diff --git a/test/acts_as_taggable_test.rb b/test/acts_as_taggable_test.rb index ed91ddc..d37e368 100644 --- a/test/acts_as_taggable_test.rb +++ b/test/acts_as_taggable_test.rb @@ -266,13 +266,19 @@ def test_clearing_cached_tag_list assert_equal "", posts(:jonathan_sky).cached_tag_list end - def test_basic_functionalty_with_sti + def test_find_tagged_with_using_sti special_post = SpecialPost.create!(:text => "Test", :tag_list => "Random") assert_equal [special_post], SpecialPost.find_tagged_with("Random") assert Post.find_tagged_with("Random").include?(special_post) end + def test_tag_counts_using_sti + SpecialPost.create!(:text => "Test", :tag_list => "Nature") + + assert_tag_counts SpecialPost.tag_counts, :nature => 1 + end + def test_case_insensitivity assert_difference "Tag.count", 1 do Post.create!(:text => "Test", :tag_list => "one")