aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases
diff options
context:
space:
mode:
authorJon Leighton <j@jonathanleighton.com>2011-03-07 00:04:06 +0000
committerAaron Patterson <aaron.patterson@gmail.com>2011-03-07 08:51:17 -0800
commit532f915037ab65873c433e30399d11f93df9f1f8 (patch)
tree2d177e4d59e9ea66a3d0ac8ebf168967446cd64a /activerecord/test/cases
parent9cee693213e0205cb5992728bb516215e34cb79f (diff)
downloadrails-532f915037ab65873c433e30399d11f93df9f1f8.tar.gz
rails-532f915037ab65873c433e30399d11f93df9f1f8.tar.bz2
rails-532f915037ab65873c433e30399d11f93df9f1f8.zip
Referencing a table via the ON condition in a join should force that table to be eager-loaded via a JOIN rather than via subsequent queries.
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r--activerecord/test/cases/relations_test.rb15
1 files changed, 15 insertions, 0 deletions
diff --git a/activerecord/test/cases/relations_test.rb b/activerecord/test/cases/relations_test.rb
index 37bbb17e74..948fcf7012 100644
--- a/activerecord/test/cases/relations_test.rb
+++ b/activerecord/test/cases/relations_test.rb
@@ -850,4 +850,19 @@ class RelationTest < ActiveRecord::TestCase
def test_primary_key
assert_equal "id", Post.scoped.primary_key
end
+
+ def test_eager_loading_with_conditions_on_joins
+ scope = Post.includes(:comments)
+
+ # This references the comments table, and so it should cause the comments to be eager
+ # loaded via a JOIN, rather than by subsequent queries.
+ scope = scope.joins(
+ Post.arel_table.create_join(
+ Post.arel_table,
+ Post.arel_table.create_on(Comment.arel_table[:id].eq(3))
+ )
+ )
+
+ assert scope.eager_loading?
+ end
end