mirror of
https://github.com/github/rails.git
synced 2026-01-10 07:07:54 -05:00
Revert "Merge pull request #9252 from senny/8423_hmt_preloading_bug"
This reverts commit c5451777b0.
Conflicts:
activerecord/CHANGELOG.md
This commit is contained in:
@@ -1,27 +1,5 @@
|
||||
## unreleased ##
|
||||
|
||||
* Preloading `has_many :through` associations with conditions won't
|
||||
cache the `:through` association. This will prevent invalid
|
||||
subsets to be cached.
|
||||
Fixes #8423.
|
||||
|
||||
Example:
|
||||
|
||||
class User
|
||||
has_many :posts
|
||||
has_many :recent_comments, -> { where('created_at > ?', 1.week.ago) }, :through => :posts
|
||||
end
|
||||
|
||||
a_user = User.includes(:recent_comments).first
|
||||
|
||||
# this is preloaded
|
||||
a_user.recent_comments
|
||||
|
||||
# fetching the recent_comments through the posts association won't preload it.
|
||||
a_user.posts
|
||||
|
||||
*Yves Senn*
|
||||
|
||||
* Fix counter cache columns not updated when replacing `has_many :through`
|
||||
associations.
|
||||
Backport #8400.
|
||||
|
||||
@@ -37,8 +37,7 @@ module ActiveRecord
|
||||
through_records = Array.wrap(owner.send(through_reflection.name))
|
||||
|
||||
# Dont cache the association - we would only be caching a subset
|
||||
if (through_scope != through_reflection.klass.unscoped) ||
|
||||
(reflection.options[:source_type] && through_reflection.collection?)
|
||||
if reflection.options[:source_type] && through_reflection.collection?
|
||||
owner.association(through_reflection.name).reset
|
||||
end
|
||||
|
||||
|
||||
@@ -1112,10 +1112,4 @@ class EagerAssociationTest < ActiveRecord::TestCase
|
||||
Post.includes(:comments).order(nil).where(:comments => {:body => "Thank you for the welcome"}).first
|
||||
end
|
||||
end
|
||||
|
||||
test "preloading does not cache has many association subset when preloaded with a through association" do
|
||||
author = Author.includes(:comments_with_order_and_conditions, :posts).first
|
||||
assert_no_queries { assert_equal 2, author.comments_with_order_and_conditions.size }
|
||||
assert_no_queries { assert_equal 5, author.posts.size, "should not cache a subset of the association" }
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user