1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Merge pull request #9391 from senny/8663_broken_hmt_ordering_with_includes

don't apply invalid ordering when preloading hmt associations.
This commit is contained in:
Rafael Mendonça França 2013-02-24 11:53:52 -08:00
commit 99d3ec5b1e
3 changed files with 13 additions and 2 deletions

View file

@ -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.

View file

@ -47,12 +47,12 @@ module ActiveRecord
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

View file

@ -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