Permalink
Browse files

Merge pull request #9391 from senny/8663_broken_hmt_ordering_with_inc…

…ludes

don't apply invalid ordering when preloading hmt associations.
  • Loading branch information...
2 parents aff6232 + 4ef75b6 commit 99d3ec5b1eeb33089b71355f7e45c242b576a8f0 @rafaelfranca rafaelfranca committed Feb 24, 2013
@@ -1,5 +1,11 @@
## Rails 4.0.0 (unreleased) ##
+* Preloading ordered `has_many :through` associations does no longer
+ apply invalid ordering to the `:through` association.
+ Fixes #8663.
+
+ *Yves Senn*
+
* The auto explain feature has been removed. This feature was
activated by configuring `config.active_record.auto_explain_threshold_in_seconds`.
The configuration option was deprecated and has no more effect.
@@ -47,12 +47,12 @@ def through_scope
through_scope.where! reflection.foreign_type => options[:source_type]
else
unless reflection_scope.where_values.empty?
- through_scope.includes_values = reflection_scope.values[:includes] || options[:source]
+ through_scope.includes_values = Array(reflection_scope.values[:includes] || options[:source])
through_scope.where_values = reflection_scope.values[:where]
end
- through_scope.order! reflection_scope.values[:order]
through_scope.references! reflection_scope.values[:references]
+ through_scope.order! reflection_scope.values[:order] if through_scope.eager_loading?
end
through_scope
@@ -73,6 +73,11 @@ def test_with_ordering
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

0 comments on commit 99d3ec5

Please sign in to comment.