<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -58,6 +58,10 @@ module ActiveRecord
                 related_tags_on('#{tag_type}',options)
               end
               alias_method :find_related_on_#{tag_type}, :find_related_#{tag_type}
+
+              def find_related_#{tag_type}_for(klass, options = {})
+                related_tags_for('#{tag_type}', klass, options)
+              end
             RUBY
           end      
           
@@ -249,16 +253,26 @@ module ActiveRecord
         end
         
         def related_tags_on(context, options={})
-          tags_to_find = self.tags_on(context).collect {|t| t.name}
-          search_conditions = { 
-            :select     =&gt; &quot;#{self.class.table_name}.*, COUNT(#{Tag.table_name}.id) AS count&quot;, 
-            :from       =&gt; &quot;#{self.class.table_name}, #{Tag.table_name}, #{Tagging.table_name}&quot;,
-            :conditions =&gt; [&quot;#{self.class.table_name}.id != #{self.id} AND #{self.class.table_name}.id = #{Tagging.table_name}.taggable_id AND #{Tagging.table_name}.taggable_type = '#{self.class.to_s}' AND #{Tagging.table_name}.tag_id = #{Tag.table_name}.id AND #{Tag.table_name}.name IN (?)&quot;,tags_to_find],
-            :group      =&gt; &quot;#{self.class.table_name}.id&quot;,
+          search_conditions = related_search_options(context, self.class, options)          
+
+          self.class.find(:all, search_conditions)
+        end
+
+        def related_tags_for(context, klass, options = {})
+          search_conditions = related_search_options(context, klass, options)
+
+          klass.find(:all, search_conditions)
+        end
+
+        def related_search_options(context, klass, options = {})
+          tags_to_find = self.tags_on(context).collect { |t| t.name }
+
+          { :select     =&gt; &quot;#{klass.table_name}.*, COUNT(#{Tag.table_name}.id) AS count&quot;, 
+            :from       =&gt; &quot;#{klass.table_name}, #{Tag.table_name}, #{Tagging.table_name}&quot;,
+            :conditions =&gt; [&quot;#{klass.table_name}.id = #{Tagging.table_name}.taggable_id AND #{Tagging.table_name}.taggable_type = '#{klass.to_s}' AND #{Tagging.table_name}.tag_id = #{Tag.table_name}.id AND #{Tag.table_name}.name IN (?)&quot;, tags_to_find],
+            :group      =&gt; &quot;#{klass.table_name}.id&quot;,
             :order      =&gt; &quot;count DESC&quot;
           }.update(options)
-          
-          self.class.find(:all, search_conditions)
         end
         
         def save_cached_tag_list</diff>
      <filename>lib/acts_as_taggable_on/acts_as_taggable_on.rb</filename>
    </modified>
    <modified>
      <diff>@@ -85,6 +85,24 @@ describe &quot;Acts As Taggable On&quot; do
       taggable1.find_related_tags.should include(taggable3)
       taggable1.find_related_tags.should_not include(taggable2)
     end
+
+    it &quot;should find other related objects based on tag names on context&quot; do
+      taggable1 = TaggableModel.create!(:name =&gt; &quot;Taggable 1&quot;)
+      taggable2 = OtherTaggableModel.create!(:name =&gt; &quot;Taggable 2&quot;)
+      taggable3 = OtherTaggableModel.create!(:name =&gt; &quot;Taggable 3&quot;)
+
+      taggable1.tag_list = &quot;one, two&quot;
+      taggable1.save
+      
+      taggable2.tag_list = &quot;three, four&quot;
+      taggable2.save
+      
+      taggable3.tag_list = &quot;one, four&quot;
+      taggable3.save
+
+      taggable1.find_related_tags_for(OtherTaggableModel).should include(taggable3)
+      taggable1.find_related_tags_for(OtherTaggableModel).should_not include(taggable2)
+    end
   end
   
   describe 'Tagging Contexts' do</diff>
      <filename>spec/acts_as_taggable_on/acts_as_taggable_on_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -24,4 +24,9 @@ ActiveRecord::Schema.define :version =&gt; 0 do
   create_table :taggable_users, :force =&gt; true do |t|
     t.column :name, :string
   end
+  create_table :other_taggable_models, :force =&gt; true do |t|
+    t.column :name, :string
+    t.column :type, :string
+    #t.column :cached_tag_list, :string
+  end
 end</diff>
      <filename>spec/schema.rb</filename>
    </modified>
    <modified>
      <diff>@@ -14,6 +14,10 @@ class TaggableModel &lt; ActiveRecord::Base
   acts_as_taggable_on :skills
 end
 
+class OtherTaggableModel &lt; ActiveRecord::Base
+  acts_as_taggable_on :tags, :languages
+end
+
 class InheritingTaggableModel &lt; TaggableModel
 end
 </diff>
      <filename>spec/spec_helper.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>8b261f2641aaeb46d5d1892badd69a6f75fde401</id>
    </parent>
  </parents>
  <author>
    <name>Tristan Dunn</name>
    <email>tristanzdunn@gmail.com</email>
  </author>
  <url>http://github.com/mbleigh/acts-as-taggable-on/commit/3393b42bf328e7805bc6444a174e3656ce19e1c9</url>
  <id>3393b42bf328e7805bc6444a174e3656ce19e1c9</id>
  <committed-date>2008-06-22T10:39:55-07:00</committed-date>
  <authored-date>2008-06-22T10:39:55-07:00</authored-date>
  <message>Added support to find other related objects.</message>
  <tree>3d66ad36343aae5eaef2e6c8f6f403aff065ae8d</tree>
  <committer>
    <name>Tristan Dunn</name>
    <email>tristanzdunn@gmail.com</email>
  </committer>
</commit>
