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:
commit
99d3ec5b1e
3 changed files with 13 additions and 2 deletions
|
@ -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 @@ 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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue