diff options
author | Yves Senn <yves.senn@gmail.com> | 2013-02-15 08:57:33 +0100 |
---|---|---|
committer | Yves Senn <yves.senn@gmail.com> | 2013-02-24 20:51:39 +0100 |
commit | 4ef75b63db314dce9e0c1a310ef3680b622bcf04 (patch) | |
tree | ece75f1a4b1dc1f1c65ffc3350da6dd0613a1792 /activerecord/test/cases/associations | |
parent | d65376fce4ea806e489d1fb985bc9393bcd2e0e2 (diff) | |
download | rails-4ef75b63db314dce9e0c1a310ef3680b622bcf04.tar.gz rails-4ef75b63db314dce9e0c1a310ef3680b622bcf04.tar.bz2 rails-4ef75b63db314dce9e0c1a310ef3680b622bcf04.zip |
don't apply invalid ordering when preloading hmt associations.
closes #8663.
When preloading a hmt association there two possible scenarios:
1.) preload with 2 queries: first hm association, then hmt with id IN ()
2.) preload with join: hmt association is loaded with a join on the hm association
The bug was happening in scenario 1.) with a normal order clause on the hmt association.
The ordering was also applied when loading the hm association, which resulted in the error.
This patch only applies the ordering the the hm-relation if we are performing a join (2).
Otherwise the order will only appear in the second query (1).
Diffstat (limited to 'activerecord/test/cases/associations')
-rw-r--r-- | activerecord/test/cases/associations/eager_test.rb | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/activerecord/test/cases/associations/eager_test.rb b/activerecord/test/cases/associations/eager_test.rb index 3bf9125013..46f3c38ac5 100644 --- a/activerecord/test/cases/associations/eager_test.rb +++ b/activerecord/test/cases/associations/eager_test.rb @@ -73,6 +73,11 @@ class EagerAssociationTest < ActiveRecord::TestCase end end + def test_has_many_through_with_order + authors = Author.includes(:favorite_authors).to_a + assert_no_queries { authors.map(&:favorite_authors) } + end + def test_with_two_tables_in_from_without_getting_double_quoted posts = Post.select("posts.*").from("authors, posts").eager_load(:comments).where("posts.author_id = authors.id").order("posts.id").to_a assert_equal 2, posts.first.comments.size |