public
Description: Ruby on Rails
Homepage: http://rubyonrails.org
Clone URL: git://github.com/rails/rails.git
Fix conditions and order on join tables with limited eager loading.  [#372 
state:resolved]
Tiago Macedo (author)
Sun Jun 08 09:00:56 -0700 2008
jeremy (committer)
Sun Jun 08 13:01:55 -0700 2008
commit  a2f6ded73209eeb9c6843b16c0253bbe56236b29
tree    475cbf39c3f042dfe67f94168389930a861b4582
parent  138adbf156905f5cc6669ba33dd94802c82514d9
...
1638
1639
1640
1641
 
 
 
1642
1643
1644
...
1638
1639
1640
 
1641
1642
1643
1644
1645
1646
0
@@ -1638,7 +1638,9 @@ module ActiveRecord
0
           end
0
 
0
           def join_for_table_name(table_name)
0
-            @joins.select{|j|j.aliased_table_name == table_name.gsub(/^\"(.*)\"$/){$1} }.first rescue nil
0
+            join = (@joins.select{|j|j.aliased_table_name == table_name.gsub(/^\"(.*)\"$/){$1} }.first) rescue nil
0
+            return join unless join.nil?
0
+            @joins.select{|j|j.is_a?(JoinAssociation) && j.aliased_join_table_name == table_name.gsub(/^\"(.*)\"$/){$1} }.first rescue nil
0
           end
0
 
0
           def joins_for_table_name(table_name)
...
14
15
16
 
 
17
18
19
20
21
 
 
22
23
24
...
609
610
611
 
 
 
 
 
 
 
 
612
...
14
15
16
17
18
19
20
21
22
 
23
24
25
26
27
...
612
613
614
615
616
617
618
619
620
621
622
623
0
@@ -14,11 +14,14 @@ require 'models/job'
0
 require 'models/subscriber'
0
 require 'models/subscription'
0
 require 'models/book'
0
+require 'models/developer'
0
+require 'models/project'
0
 
0
 class EagerAssociationTest < ActiveRecord::TestCase
0
   fixtures :posts, :comments, :authors, :categories, :categories_posts,
0
             :companies, :accounts, :tags, :taggings, :people, :readers,
0
-            :owners, :pets, :author_favorites, :jobs, :references, :subscribers, :subscriptions, :books
0
+            :owners, :pets, :author_favorites, :jobs, :references, :subscribers, :subscriptions, :books,
0
+            :developers, :projects
0
 
0
   def test_loading_with_one_association
0
     posts = Post.find(:all, :include => :comments)
0
@@ -609,4 +612,12 @@ class EagerAssociationTest < ActiveRecord::TestCase
0
       Comment.find :all, :include => :post
0
     end
0
   end
0
+
0
+  def test_conditions_on_join_table_with_include_and_limit
0
+    assert_equal 3, Developer.find(:all, :include => 'projects', :conditions => 'developers_projects.access_level = 1', :limit => 5).size
0
+  end
0
+
0
+  def test_order_on_join_table_with_include_and_limit
0
+    assert_equal 5, Developer.find(:all, :include => 'projects', :order => 'developers_projects.joined_on DESC', :limit => 5).size
0
+  end
0
 end

Comments