<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -2099,10 +2099,8 @@ module ActiveRecord
                 else
                   &quot;&quot;
               end || ''
-              join &lt;&lt; %(AND %s.%s = %s ) % [
-                connection.quote_table_name(aliased_table_name),
-                connection.quote_column_name(klass.inheritance_column),
-                klass.quote_value(klass.sti_name)] unless klass.descends_from_active_record?
+              join &lt;&lt; %(AND %s) % [
+                klass.send(:type_condition, aliased_table_name)] unless klass.descends_from_active_record?
 
               [through_reflection, reflection].each do |ref|
                 join &lt;&lt; &quot;AND #{interpolate_sql(sanitize_sql(ref.options[:conditions]))} &quot; if ref &amp;&amp; ref.options[:conditions]</diff>
      <filename>activerecord/lib/active_record/associations.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1609,10 +1609,11 @@ module ActiveRecord #:nodoc:
           sql &lt;&lt; &quot;WHERE #{merged_conditions} &quot; unless merged_conditions.blank?
         end
 
-        def type_condition
+        def type_condition(table_alias=nil)
+          quoted_table_alias = self.connection.quote_table_name(table_alias || table_name)
           quoted_inheritance_column = connection.quote_column_name(inheritance_column)
-          type_condition = subclasses.inject(&quot;#{quoted_table_name}.#{quoted_inheritance_column} = '#{sti_name}' &quot;) do |condition, subclass|
-            condition &lt;&lt; &quot;OR #{quoted_table_name}.#{quoted_inheritance_column} = '#{subclass.sti_name}' &quot;
+          type_condition = subclasses.inject(&quot;#{quoted_table_alias}.#{quoted_inheritance_column} = '#{sti_name}' &quot;) do |condition, subclass|
+            condition &lt;&lt; &quot;OR #{quoted_table_alias}.#{quoted_inheritance_column} = '#{subclass.sti_name}' &quot;
           end
 
           &quot; (#{type_condition}) &quot;</diff>
      <filename>activerecord/lib/active_record/base.rb</filename>
    </modified>
    <modified>
      <diff>@@ -68,6 +68,18 @@ class CascadedEagerLoadingTest &lt; ActiveRecord::TestCase
     end
   end
 
+  def test_eager_association_loading_with_has_many_sti_and_subclasses
+    silly = SillyReply.new(:title =&gt; &quot;gaga&quot;, :content =&gt; &quot;boo-boo&quot;, :parent_id =&gt; 1)
+    silly.parent_id = 1
+    assert silly.save
+
+    topics = Topic.find(:all, :include =&gt; :replies, :order =&gt; 'topics.id, replies_topics.id')
+    assert_no_queries do
+      assert_equal 2, topics[0].replies.size
+      assert_equal 0, topics[1].replies.size
+    end
+  end
+
   def test_eager_association_loading_with_belongs_to_sti
     replies = Reply.find(:all, :include =&gt; :topic, :order =&gt; 'topics.id')
     assert replies.include?(topics(:second))</diff>
      <filename>activerecord/test/cases/associations/cascaded_eager_loading_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>8f4d3957a6986fe450cfd9058bb92ae1d6e5e745</id>
    </parent>
  </parents>
  <author>
    <name>Tarmo T&#228;nav</name>
    <email>tarmo@itech.ee</email>
  </author>
  <url>http://github.com/rails/rails/commit/2b69a636c431d62a85b2896d87b69cb13e2b8af0</url>
  <id>2b69a636c431d62a85b2896d87b69cb13e2b8af0</id>
  <committed-date>2008-08-16T12:41:19-07:00</committed-date>
  <authored-date>2008-08-15T16:24:29-07:00</authored-date>
  <message>Fixed STI type condition for eager loading of associations

Signed-off-by: Pratik Naik &lt;pratiknaik@gmail.com&gt;</message>
  <tree>56490c5c00af972feaa9e80432303d124ecc6150</tree>
  <committer>
    <name>Pratik Naik</name>
    <email>pratiknaik@gmail.com</email>
  </committer>
</commit>
